Java UUID 压缩和解压缩

标签 java uuid

我想做以下...

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/

相关文章:

java - 使用 servlet 注销

java - 如何验证表中某列是否存在

android - 如何使用Qt从iOS连接到蓝牙低功耗设备?

python - 来自同一台机器上多个进程的唯一 UUID

java - 如何初始化一个静态数组?

java - 使用 hbm.xml 的 Hibernate 中主键的强制 setter

java - org.apache.axis2.AxisFault : Unknow type can not serialize while passing array of objects in webservice

mysql - JPA 或 Hibernate 如何生成 UUID 作为 key ?

java - 在 Java 中生成全局唯一标识符

java - 为什么我的 UUID 使用了太多时间?