UUID 唯一性

UUID uniqueness

提问人:Tony 提问时间:11/16/2023 更新时间:11/16/2023 访问量:24

问:

我真的只想验证,因为我认为这是真的。当我创建一个 UUID 时,我 “3dc576a5-5bcc-44e4-b1c7-cbed7d3dcd4c”。我使用它的内容不能包含破折号,所以我删除了它们,“3dc576a55bcc44e4b1c7cbed7d3dcd4c”。这应该是独一无二的,对吧?也就是说,它不会创建类似“3dc576a-55bcc4-4e4b1c7-cbed7d3dcd4c”或 “3DC57-6A-55BCC44-E4B1C7-CBED7D3DCD4C”等,对吗?我想即使它这样做了,那也是极其罕见的。

随机 UUID

评论

1赞 Martheen 11/16/2023
这些破折号只是表示格式 en.wikipedia.org/wiki/......
0赞 Maarten Bodewes 11/16/2023
而且,根据定义,它们不能帮助 UUID 领域的独特性,因为它们总是在同一位置上的相同角色。

答:

0赞 Maarten Bodewes 11/16/2023 #1

对于 UUID,元数据和随机位数为:3dc576a5-5bcc-44e4-b1c7-cbed7d3dcd4c

Version: 4 (Indicates a randomly generated UUID)
Variant: Specified in RFC 4122 (Typically Variant 1 in UUID terminology)

随机位数:122位


UUID 通常表示为 32 个十六进制字符,分为 5 组,用连字符分隔。格式为 8-4-4-4-12。在版本 4 UUID 中,元数据位的位置如下:

  1. 版本(4 位):它位于 UUID 的第 13 位到第 16 位。这些位是第三组字符的一部分。在十六进制表示中,它是第三组的第一个字符(总共第 7 个字符)。对于版本 4 UUID,此字符将为“4”。

  2. 变体(2 位):这些位位于第 49 位到第 50 位。它们位于第 17 个字符的前两位(第四组的第一个字符)中。在版本 4 UUID 中,这两个位的十六进制表示形式将是 8、9、A 或 B 之一。

因此,在 UUID 中,“e4”中的“4”表示它是版本 4 UUID,“b1c7”中的“b”是变体编码的一部分。其余字符是随机生成的。3dc576a5-5bcc-44e4-b1c7-cbed7d3dcd4c


对于 122 个随机位,冲突的几率非常低,只要这些随机位是使用种子良好的 RNG 创建的,该 RNG 会产生良好的分布值。