Сколько символов находится там в GUID?

На большинстве языков программирования, таких как Java и C/C++, число с начальным нулем интерпретируется как восьмеричное число . Как известно, восьмеричные числа представлены только в пределах от 0 до 7. Следовательно, числа, подобные 05, 03, 054, действительны, но числа, подобные 078, 0348, 09, 08, имеют тенденцию к недействительности.

74
задан Jim Counts 3 March 2009 в 18:59
поделиться

3 ответа

От MSDN:

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

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

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

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

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

-Adam

121
ответ дан Adam Davis 7 November 2019 в 07:36
поделиться

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

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

12
ответ дан Community 7 November 2019 в 07:36
поделиться

TL;DR: Нет.

Как заявил Адам Дэвис, стиль 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

30
ответ дан 24 November 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: