UUIDは128ビットの識別子でAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE の形式で16進数表記されます。
バージョン
CCCCの16ビットの上位4ビットはUUIDのバージョンを表す。
バリアント
DDDDの上位1~4ビットはUUIDのバリアントを表す。
UUIDのバリアントは、UUIDの形式やバージョンを指定するためのフィールドであり、以下のように定義されています:
- Variant 0: NCS backward compatibility
- バイナリ:
0xxx (最上位ビットが0)
- これは、かつてのNetwork Computing System(NCS)の互換性を保持するための形式です。
- Variant 1: RFC 4122 (Leach-Salz)
- バイナリ:
10xx (最上位ビットが10)
- これは、現在広く使用されているUUIDの形式です。UUIDバージョン1、2、3、4、5はこのバリアントに属します。
- Variant 2: Microsoft GUIDs
- バイナリ:
110x (最上位ビットが110)
- これは、Microsoftが使用するGUID形式です。
- Variant 3: Reserved for future definition
- バイナリ:
111x (最上位ビットが111)
- 将来の定義や用途のために予約されています。
これらのバリアントによって、UUIDの形式や構造が異なることが保証されます。通常、UUIDのバリアントフィールドはUUID全体の正しい解釈を導くために使用されます。
有効ビット数
バージョンとリビジョンのためのビットを除外したビット数を数えてみる。
AAAAAAAA(32ビット):全てのビットが有効です。
- BBBB(16ビット):上位4ビットがバージョン情報に使用され、残りの12ビットが有効です。
- CCCC(16ビット):上位2ビットがバリアント情報に使用され、残りの14ビットが有効です。
- DDDD(16ビット):全てのビットが有効です。
- EEEEEEEEEEEE(48ビット):全てのビットが有効です。