java.util.UUID.randomUUID().toString() length 是的!!是的。更新:版本

2022-08-31 16:10:23

java.util.UUID.randomUUID().toString() length 是否始终等于 36?

我无法找到有关这方面的信息。这里只说了以下内容:

公共静态 UUID randomUUID() 静态工厂,用于检索类型 4(伪随机生成)UUID。UUID 是使用加密强伪随机数生成器生成的。返回:随机生成的 UUID

这并不能说明什么。我不知道在这种情况下,类型4是什么意思。type 4


答案 1

java.util.UUID.randomUUID().toString() length 是否始终等于 36?

是的!!是的。

A 实际上是一个 128 位值(长度为 2)。要表示128位到十六进制字符串中,将有char(每个char的长度为4bit)。在字符串格式中,它还包含4(),这就是为什么长度为36。UUID128/4=32-

例:54947df8-0e9e-4471-a2f9-9af509fb5889

32 个十六进制字符 + 4 个连字符字符 = 36 个字符。因此,长度将始终相同。


更新:

我不知道类型4在这种情况下意味着什么。?

仅供参考:有几种方法可以生成UUID。此处类型 4 表示此 uuid 是使用随机数或伪随机数生成的。来自维基 - Universally_unique_identifier#版本

版本

对于变体1和2,标准中定义了五个“版本”,每个版本在特定用例中可能比其他版本更合适。版本由字符串表示中的 M 表示。

版本 1UUID由时间和节点ID(通常是MAC地址)生成;

版本 2UUID由标识符(通常是组或用户ID),时间和节点ID生成;

版本 3 和 5 生成通过散列命名空间标识符和名称生成的确定性 UUID;

版本 4 UUID 是使用随机数或伪随机数生成的。


答案 2

您可以使用 base64 将 UUIDv4 16 字节二进制转换为 24 字节 ascii,而是编码为 ascii-hex(32 字节)