Скільки символів у 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.
Думаю, важливо пам’ятати, що стиль Microsoft для відображення GUID - це лише представлення GUID, яке насправді є 16-байтовим інтегральним значенням (як заявив Майкл Трауш).
Ви також можете представити його різними, більш компактними способами, перетворивши байти в інший набір символів (наприклад, 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 байти (по два байти на кожен байт), плюс 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 :