On this page
String Format
§2.2.1 Canonical form
The canonical string representation of a GUID MUST use the following format:
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
The string MUST be exactly 38 characters: an opening brace, 32 hex digits arranged in 8-4-4-4-12 groups separated by hyphens, and a closing brace.
The fields map to the string as follows:
| Group | Digits | Source |
|---|---|---|
| 1 | 8 | Data1, most significant nibble first |
| 2 | 4 | Data2, most significant nibble first |
| 3 | 4 | Data3, most significant nibble first |
| 4 | 4 | Data4[0] and Data4[1], in byte order |
| 5 | 12 | Data4[2] through Data4[7], in byte order |
For Data1, Data2, and Data3, the hex representation is of the numeric value (most significant nibble first), not of the stored byte order. For Data4, each byte is encoded in sequence with the high nibble before the low nibble.
[!INFORMATIVE] Example. Given the 16 bytes (in storage order):
04 03 02 01 06 05 08 07 09 0a 0b 0c 0d 0e 0f 10Data1 = 0x01020304 (little-endian), Data2 = 0x0506, Data3 = 0x0708. The string representation is:
{01020304-0506-0708-090a-0b0c0d0e0f10}
§2.2.2 Case
Canonical output MUST use lowercase hex digits (a–f).
§2.2.3 Parsing
Parsers MUST accept both uppercase and lowercase hex digits.
Parsers MUST accept the braced form {...} and SHOULD accept the
unbraced form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Parsers MUST reject strings that do not have exactly the right number of hex digits in each group.