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).