Skip to main content

5.4. UUID Version 4 (UUID 版本 4)

5.4. UUID Version 4 (UUID 版本 4)

UUIDv4 用于从真正的随机数或伪随机数生成 UUID。

实现可以生成 128 位随机数据, 用于填充图 8 中的 UUID 字段。然后, UUID 版本和变体替换各自的位, 如第 4.1 节和第 4.2 节所定义。

或者, 实现可以选择随机生成 random_a、random_b 和 random_c 所需的确切位数 (总共 122 位), 然后在所需位置连接版本和变体。

有关随机数据生成的指南, 请参见第 6.9 节。

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| random_a |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| random_a | ver | random_b |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var| random_c |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| random_c |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

图 8: UUIDv4 字段和位布局

字段定义:

random_a: 布局的前 48 位, 可以用随机数据填充, 如第 6.9 节所指定。占用位 0 到 47 (八位组 0-5)。

ver: 由第 4.2 节定义的 4 位版本字段, 设置为 0b0100 (4)。占用八位组 6 的位 48 到 51。

random_b: 布局的另外 12 位, 可以根据第 6.9 节用随机数据填充。占用位 52 到 63 (八位组 6-7)。

var: 由第 4.1 节定义的 2 位变体字段, 设置为 0b10。占用八位组 8 的位 64 和 65。

random_c: 紧跟 var 字段之后的布局的最后 62 位, 将根据第 6.9 节用随机数据填充。占用位 66 到 127 (八位组 8-15)。