На большинстве языков программирования, таких как Java
и C/C++
, число с начальным нулем интерпретируется как восьмеричное число . Как известно, восьмеричные числа представлены только в пределах от 0
до 7
. Следовательно, числа, подобные 05
, 03
, 054
, действительны, но числа, подобные 078
, 0348
, 09
, 08
, имеют тенденцию к недействительности.
От MSDN:
GUID А является 128-разрядным значением, состоящим из одной группы из 8 шестнадцатеричных цифр, сопровождаемых тремя группами из 4 шестнадцатеричных цифр каждый, сопровождаемый одной группой из 12 шестнадцатеричных цифр. Следующий GUID в качестве примера показывает группировки шестнадцатеричных цифр в GUID: 6B29FC40-CA47-1067-B31D-00DD010662DA
От Википедия :
Часто фигурные скобки добавляются для включения вышеупомянутого формата, как такового:
{3F2504E0-4F89-11D3-9A0C-0305E82C3301}
Так в общей сложности 38 символов в типичном шестнадцатеричном кодировании фигурными скобками.
-Adam
Как Adam упомянул от кавычки MSDN, UUID являются 128-разрядными значениями. Это означает, что они берут 16 байтов RAM для содержания значения. Текстовое представление возьмет 32 байта (два байта для каждого единственного байта), плюс эти 4 дефиса, плюс две скобки, если Вы захотите включать их; это составляет 38 байтов.
Просто имеют в виду, что, если Вы представляете UUID пользователям Вашего программного обеспечения, они могут предоставить UUID или без скобок. Если Вы храните значение где-нибудь, лучше хранить его как 16-байтовое двоичное представление. Если Вы взаимодействуете с другими реализациями UUID, можно хотеть использовать основной текстовый формат для совместимости, так как различные реализации делают разные вещи для порядка байтов при хранении двоичного значения UUID.
Как заявил Адам Дэвис, стиль Microsoft - это HEX-кодировка (со скобками и тире, чтобы сделать ее более читабельной), которая может быть отображена с помощью подмножества символов ASCII (0-9 и A-F), но это не совсем ASCII-кодировка.
Полагаю, важно помнить, что стиль отображения GUID от 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