跳到主要内容

5.4. UUID Version 4

5.4. UUID Version 4

UUIDv4 用于根据真随机数或伪随机数生成 UUID.

实现可以生成 128 位随机数据, 用于填充 Figure 8 中的 UUID 字段. 随后, UUID version 和 variant 按 Sections 4.1 和 4.2 的定义替换相应位.

或者, 实现 MAY 选择随机生成 random_a、random_b 和 random_c 所需的精确位数 (总计 122 位), 然后在所需位置拼接 version 和 variant.

关于随机数据生成指南, 请参见 Section 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 8: UUIDv4 字段和位布局

字段定义:

random_a: 布局的前 48 位, 可按 Section 6.9 的规定填入随机数据. 占据第 0 到 47 位 (八位组 0-5).

ver: Section 4.2 定义的 4 位 version 字段, 设置为 0b0100 (4). 占据第 6 个八位组的第 48 到 51 位.

random_b: 布局中的另外 12 位, 可按 Section 6.9 填入随机数据. 占据第 52 到 63 位 (八位组 6-7).

var: Section 4.1 定义的 2 位 variant 字段, 设置为 0b10. 占据第 8 个八位组的第 64 和 65 位.

random_c: 布局中紧随 var 字段之后的最后 62 位, 按 Section 6.9 填入随机数据. 占据第 66 到 127 位 (八位组 8-15).