Вопрос

Сколько символов содержится в GUID при использовании кодировки ASCII?

Меня интересует стиль Microsoft, который включает фигурные скобки и тире.

Это было полезно?

Решение

От MSDN:

GUID-это 128-разрядное значение, состоящее из одной группы по 8 шестнадцатеричных цифр, за которой следует три группы по 4 шестнадцатеричных цифр, а затем одна группа из 12 шестнадцатеричных цифр.В следующем примере GUID показывает группировки шестнадцатеричных цифр в GUID:6B29FC40-CA47-1067-B31D-00DD010662DA

От Википедия:

Часто брекеты добавляются, чтобы охватить вышеуказанный формат, как таковой:

{3F2504E0-4F89-11D3-9A0C-0305E82C3301}

Итого 38 символов в типичной шестнадцатеричной кодировке с фигурными скобками.

-Адам

Другие советы

ТЛ;ДР:Никто.

Как заявил Адам Дэвис, стиль Microsoft представляет собой HEX-кодировку (с фигурными скобками и тире, чтобы сделать ее более читаемой), которую можно отображать с использованием подмножества символов ASCII (0–9 и A–F), но это не конкретно кодировка ASCII.

Я думаю, важно помнить, что стиль отображения GUID в Microsoft — это всего лишь представление GUID, который на самом деле представляет собой 16-байтовое целое значение (как заявил Майкл Трауш).

Вы также можете представить его другими, более компактными способами, преобразуя байты в другой набор символов (например, ASCII).

Теоретически вы можете отображать каждый байт как расширенный символ ASCII (255 символов), что позволит вам сохранить GUID в виде строки длиной 16 символов.

Однако он будет не очень читабельным, поскольку будет включать в себя пробельные символы (CR, пробел, табуляция и т. д.) и другие специальные символы, поэтому это будет иметь смысл только в том случае, если вы хотите эффективно сохранить GUID в нечитаемом человеком формате символов. , например, в базе данных, которая изначально не поддерживает GUID или быстрое сопоставление небольших двоичных значений:http://en.wikipedia.org/wiki/Extended_ASCII

ИМХО, наиболее читаемым способом более компактного отображения GUID было бы использование кодировки Base64, которая позволяет сохранить его в строке длиной 22 символа и придать ему такой вид:

7v26IM9P2kmVepd7ZxuXyQ==

Но, как утверждает Джефф Этвуд на своем сайте, вы также можете вставить GUID в строку из 20 символов в кодировке ASCII85:

[Rb*hlkkXVW+q4s(YSF0

Для большего вдохновения см.:http://www.codinghorror.com/blog/2005/10/equipping-our-ascii-armor.html

Как упомянул Адам в цитате MSDN, UUID представляют собой 128-битные значения.Это означает, что для хранения значения им требуется 16 байт ОЗУ.Текстовое представление займет 32 байта (по два байта на каждый байт), плюс 4 дефиса и две скобки, если вы хотите их включить;это составляет 38 байт.

Просто имейте в виду, что если вы предоставляете UUID пользователям вашего программного обеспечения, они могут предоставить UUID со скобками или без них.Если вы храните значение где угодно, лучше всего хранить его в виде 16-байтового двоичного представления.Если вы взаимодействуете с другими реализациями UUID, вы можете захотеть использовать базовый текстовый формат для совместимости, поскольку разные реализации делают разные вещи с порядком байтов при хранении двоичного значения UUID.

Длина зависит от кодировки.Вы можете получить стандартные кодировки и длину с помощью этого фрагмента:

public void Main() 
{
    var guid = Guid.Empty;
    Write(guid, "N"); // 32 characters
    Write(guid, "D"); // 36 characters (default)
    Write(guid, "B"); // 38 characters
    Write(guid, "P"); // 38 characters
    Write(guid, "X"); // 68 characters
}    

private void Write(Guid guid, string format) 
{
    var guidString = guid.ToString(format);
    Console.WriteLine("{0}: {1} ({2} characters)", format, guidString, guidString.Length);
}

увидеть Метод Guid.ToString подробности:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top