c# 获取machineguid_c# – 如何将.NET Guid读入Java UUID

我需要将一个在.NET中生成的Guid传递给Java应用程序。我使用Guid.ToByteArray()将其作为一个字节[]存储在磁盘上,然后将其读入Java并将其转换为UUID。为此,我复制了一个采用byte []的UUID的(private)构造函数的实现:

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;

}

但是,当我使用toString()检查UUID时,Java UUID与.NET Guid不同。

例如,.NET Guid

888794c2-65ce-4de1-aa15-75a11342bc63

变成Java UUID

c2948788-ce65-e14d-aa15-75a11342bc63

看起来前三组的字节顺序是相反的,而最后两组的排序是相同的。

由于我期望Guid和UUID的toString()产生相同的结果,有没有人知道如何正确地将.NET Guid读入Java UUID?

编辑:澄清,执行不是我自己的。它是java.util.UUID类的私有构造函数,它使用一个字节[],我将它复制以用于从磁盘读取字节[]到UUID中。

我不想使用字符串存储Guid,因为我正在存储很多它们,这似乎是浪费空间。

Russell Troywest的链接至少澄清了Guid的前几组出来的原因,而下半场则保持同样的顺序。问题是,我可以依靠.NET总是按照相同的顺序生成这些字节吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值