gpt4 book ai didi

java - 如何减少使用 randomUUID( ) 生成的 UUID 的长度

转载 作者:太空狗 更新时间:2023-10-29 22:39:28 28 4
gpt4 key购买 nike

我有一个简短的实用程序,我在其中使用 randomUUID() 生成 UUID。

String uuid = UUID.randomUUID().toString();

但是生成的uuid太长了,长度是36。

有什么方法可以将 UUID 的长度从 36 减少到接近 16 或使 UUID 长度动态化?

最佳答案

如果你不需要它是唯一的,你可以使用你喜欢的任何长度。

例如,您可以这样做。

Random rand = new Random();
char[] chars = new char[16];
for(int i=0;i<chars.length;i++) {
chars[i] = (char) rand.nextInt(65536);
if (!Character.isValidCodePoint(chars[i]))
i--;
}
String s = new String(chars);

这将为您提供几乎相同程度的随机性,但会使用 \u0000\ufffd 之间的所有可能字符>

如果您需要可打印的 ASCII 字符,您可以尽可能短,但唯一性的可能性会大大降低。可以做的是使用 base 36 而不是 base 16

UUID uuid = UUID.randomUUID();
String s = Long.toString(uuid.getMostSignificantBits(), 36) + '-' + Long.toString(uuid.getLeastSignificantBits(), 36);

平均26个字符,最多27个字符。

可以使用base64编码,减少到22个字符。

如果你使用 base94,你可以得到 20 个字符。

如果您使用从\u0000 到\ufffd 的整个有效字符范围,您可以将其减少到仅 9 个字符或 17 个字节。

如果您不关心字符串,您可以使用 16、8 位字节。

关于java - 如何减少使用 randomUUID( ) 生成的 UUID 的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20994768/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com