如何将 .NET Guid 读入 Java UUID
我需要将 .NET 中生成的 Guid 传达给 Java 应用程序。我用它来将它作为存储在磁盘上,然后将其读入Java并将其转换为UUID。为此,我复制了UUID的(私有)构造函数的实现,该构造函数采用:Guid.ToByteArray()
byte[]
byte[]
private UUID(byte[] data) {
long msb = 0;
long lsb = 0;
assert data.length == 16;
for (int i=0; i<8; i++)
msb = (msb << 8) | (data[i] & 0xff);
for (int i=8; i<16; i++)
lsb = (lsb << 8) | (data[i] & 0xff);
this.mostSigBits = msb;
this.leastSigBits = lsb;
}
但是,当我使用 检查 UUID 时,Java UUID 与 .NET Guid 不同。toString()
例如,.NET Guid
888794c2-65ce-4de1-aa15-75a11342bc63
变成 Java UUID
c2948788-ce65-e14d-aa15-75a11342bc63
似乎前三组的字节顺序是相反的,而最后两组的顺序是相同的。
由于我期望 Guid 和 UUID 产生相同的结果,有谁知道我应该如何将 .NET Guid 正确读取到 Java UUID 中?toString()
编辑:澄清一下,实现不是我自己的。它是该类的私有构造函数,它采用 ,我复制该构造函数以用于将字节[]从磁盘读取到UUID中。java.util.UUID
byte[]
我不想使用字符串来存储Guid,因为我存储了很多字符串,这似乎是浪费空间。
Russell Troywest的链接至少澄清了为什么Guid的前几组反转,而后半部分则保持相同的顺序。问题是,我是否可以依赖 .NET 始终以相同的顺序生成这些字节?