Сколько символов в GUID при использовании кодировки ASCII?
Меня интересует стиль Microsoft, который включает фигурные скобки и тире.
Сколько символов в 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 и AF), но это не является конкретно кодировкой 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 в закодированную строку ASCII85 из 20 символов:
[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 :