我试图在分布式系统中生成群集范围内的唯一ID,我选择生成UUID。 UUID是128位十六进制数,生成两次的概率非常非常低。我的问题是如何将十六进制字符串转换为长值?以下是我的代码及其输出。我尝试了不同的方式,但我不断得到例外。
代码:
for (int i = 0; i < 10; i++) {
UUID uuid = UUID.randomUUID();
System.out.println("Generated UUID: " + uuid );
}
输出:
Generated UUID: 7a8c2c99-a378-4481-a4d5-0b90dae8d220
Generated UUID: d93da730-a261-4617-a0cb-eaa3441a956d
Generated UUID: bfaa2c28-fbde-42aa-a3ff-3db0709b5fa9
Generated UUID: df131f0c-b3aa-4132-bcc7-1268f21b0a1b
Generated UUID: 066ecfd0-144b-441d-848a-8b2b425d93f8
Generated UUID: aeaabb6b-a03e-4afe-ac2e-a08902c8490c
Generated UUID: 19953f8d-b9f5-418e-9577-6222ef3ab3f8
Generated UUID: d936862f-7e63-4384-9694-24714b8953ab
Generated UUID: f0f979e4-d570-4867-afc0-fbf92ef3c570
Generated UUID: e504165f-823e-4dea-b520-a323032bd37c
答案 0 :(得分:1)
那是不可能的。 Java中的原始类型long
是64位类型。在不丢失信息的情况下,您无法在64位中输入128位。