我需要将在.NET中生成的Guid传递给Java应用程序.我用Guid.ToByteArray()它将它作为a存储在磁盘上byte[],然后将其读入Java并将其转换为UUID.为此,我复制了UUID的(私有)构造函数的实现,该构造函数采用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;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用UUID检查时toString(),Java UUID与.NET Guid不同.
例如,.NET Guid
888794c2-65ce-4de1-aa15-75a11342bc63
Run Code Online (Sandbox Code Playgroud)
变成Java UUID
c2948788-ce65-e14d-aa15-75a11342bc63
Run Code Online (Sandbox Code Playgroud)
似乎前三组的字节顺序是相反的,而后两组中的顺序是相同的.
既然我希望toString()Guid和UUID都能产生相同的结果,有谁知道我应该如何正确地将.NET Guid读入Java UUID?
编辑:澄清一下,实施不是我自己的.它是类的私有构造函数,java.util.UUID它采用a byte[] …
我有一个C#应用程序,其中一些部分是使用WPF编写的(Mono不支持).是否可以在Linux上编译此应用程序?最终,应用程序将在Windows上运行,但它是更大框架的一部分,我们的整个构建过程在Linux上运行,所以我希望能够在Linux上编译C#应用程序.