我想做以下...
a) 将生成的 UUID 压缩为长度为 8 的字符串。
b) 将压缩后的UUID解压回原来的UUID。
原因是因为我必须将 UUID 发送到合作系统,而合作系统只接受 8 个字符的 UUID,不,我不能请求更改合作系统。
因此,剩下要做的是将我必须的 UUID 压缩为 8 个字符的字符串,然后在从合作系统返回消息时将其解压缩回原始 UUID。
有什么想法吗?
谢谢。
最佳答案
由于信息论的原因,您的要求是不可能的。
UUID 由 RFC 4122 指定是 128 位,UUID
objects in Java 也是.
Java String
可以为每个字符存储 16 位,这将构成一个 8-char
字符串。但是,并非所有位序列都是有效的 UTF-16 字符串,因此在 8 个字符中,您可以存储少于 128 位的信息。
因此,如果将 UUID 压缩为有效的 8 字符字符串,就会丢失信息,因此通常无法解压缩它以取回原始 UUID。
您可能想要生成一个较短的字符串以用作唯一标识符。如果是这样,请参阅 Generating 8-character only UUIDs .
关于Java UUID 压缩和解压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822004/