Используя кодировку ASCII, сколько символов присутствует в GUID?
Меня интересует стиль Microsoft, в который входят фигурные скобки и тире.
Используя кодировку ASCII, сколько символов присутствует в GUID?
Меня интересует стиль Microsoft, в который входят фигурные скобки и тире.
От MSDN:
GUID - это 128-битное значение, состоящее из одной группы из 8 шестнадцатеричных цифр, затем следуют три группы по 4 шестнадцатеричные цифры, за которыми следуют одна группа из 12 шестнадцатеричных цифр. В следующем примере GUID отображается группировки шестнадцатеричных цифр в GUID: 6B29FC40-CA47-1067-B31D-00DD010662DA
От Wikipedia:
Часто фигурные скобки добавляются, чтобы заключить выше формата, как таковой:
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
Таким образом, в типичной шестнадцатеричной кодировке с фигурными фигурными скобками содержится всего 38 символов.
-Adam
Как сказал Адам Дэвис, стиль Microsoft - это кодировка HEX (с фигурными фигурами и тире, чтобы сделать ее более читаемой), которая может быть отображена с использованием подмножества символов ASCII (0-9 и AF), но это не является специально кодировкой ASCII.
Я думаю, важно помнить, что стиль отображения GUID в Microsoft для Microsoft - это только представление GUID, которое на самом деле представляет собой 16-байтовое целочисленное значение (как заявил Micheal Trausch).
Вы также можете представить его различными, более компактными способами, преобразовывая байты в другой набор символов (например, ASCII).
Теоретически вы можете отображать каждый байт в виде расширенного символа ASCII (255 символов), что позволит вам сохранить идентификатор GUID в виде строки длиной 16 символов.
Это было бы не очень понятно, потому что оно включало бы пробельные символы (CR, пробел, табуляцию и т.д.) и другие специальные символы, поэтому это имело бы смысл, если вы хотите эффективно сохранить GUID в нечеловеке читаемый формат символов, например, в базе данных, которая не поддерживает GUID или быстрое сопоставление небольших двоичных значений: http://en.wikipedia.org/wiki/Extended_ASCII
IMHO самым читаемым способом отображения 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 байта (два байта для каждого байта) плюс четыре дефиса плюс два скобки, если вы хотите их включить; это составляет 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: