我需要将.NET中生成的Guid传达给Java应用程序。我曾经Guid.ToByteArray()
以的形式将其存储在磁盘上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;
}
但是,当我使用检查UUID时toString()
,Java UUID与.NET Guid不同。
例如,.NET Guid
888794c2-65ce-4de1-aa15-75a11342bc63
变成Java UUID
c2948788-ce65-e14d-aa15-75a11342bc63
看起来前三组的字节顺序是相反的,而后两组的顺序是相同的。
由于我希望toString()
Guid和UUID都能产生相同的结果,所以有人知道我应该如何正确地将.NET Guid读入Java UUID吗?
编辑:
澄清一下,实现不是我自己的。它是java.util.UUID
该类的私有构造函数,带有byte[]
,我复制了该函数以用于从磁盘将byte
[]读取到UUID中。
我不想使用字符串来存储Guid,因为我存储了很多Guid,这似乎是在浪费空间。
罗素·特洛伊斯特(Russell
Troywest)的链接至少阐明了为什么Guid的前几对以相反的顺序出现,而后半部分却保持相同的顺序。问题是,我是否可以依赖.NET 始终
以相同顺序生成这些字节?
响应您的编辑,不,您不能始终依赖以相同顺序生成的字节。运行时确定字节顺序。C#确实提供BitConverter.isLittleEndian
了这个原因。
我知道您无法更改Java实现的字节序和位移。但是,您可以在存储之后以及将它们发送到Java之前将C#端的位移位。
更新:
关于IsLittleEndian的MSDN文章
编辑:实际上,您可以指望它在第一个字节块的布局中始终为小端,但从技术上讲您不能。
问题内容: 如果有一个对象,应该如何处理该对象并产生一个String? 假设我有一个包含文本数据的文件,并且想将其转换为String,因此例如可以将其写入日志文件。 InputStream将并将其转换为的最简单方法是String什么? 问题答案: 做到这一点的一种好方法是使用将apache复制 甚至 另外,如果您不想混合和 ,则可以使用
问题内容: 我检查了一些类似的问题,但似乎没有一个合适的答案(或对我来说足够愚蠢)。因此,我有一个非常简单的WebAPI来检查DB中是否存在带有电子邮件的用户。 AJAX: WebAPI: 现在很明显,这是行不通的。Ajax调用工作正常,但是如何将json对象解析为WebAPI以便能够像调用它一样? 编辑 我无法将电子邮件地址作为字符串传递,因为逗号弄乱了路由。 ajax调用工作正常,该对象被发送
问题内容: 嗨,我想读取N行的txt文件,并将结果放入字符串数组中。 问题答案: 使用和。
问题内容: 我的表中有一行我不想更改(曾经)。 是否可以将MySQL行设置为READ-ONLY,以便不能以任何方式更新它?如果是这样,怎么办? 如果不是,是否可以在该行的某一列中设置一个永久值,以使其无法更改?如果是这样,怎么办? 谢谢。 问题答案: 这可能是业务逻辑,可能不属于您的数据存储层。但是,仍然可以使用触发器来实现。 如果将要更新“锁定”记录,则可以创建引发错误的触发器;由于 在执行 该
问题内容: 我想在我的JQuery代码中将json响应读取为名称和值对。这是我从Java代码返回的示例JSON响应: 在我的JQuery中,如果我写的话,我将获得的价值。这是我的JQuery代码 在这里,我想读取jsonResponse而不是JQuery中的硬编码。诸如循环遍历响应以获取每个名称和值之类的东西。有什么建议? 问题答案: 重要的是要注意,属性的迭代顺序是任意的,不应依赖。
问题内容: 如何在Java中将文件读取为字节? 重要的是要注意,所有字节都必须为正,即不能使用负范围。 可以用Java完成吗,如果可以,怎么做? 我需要能够将文件的内容乘以一个常数。我以为我可以将字节读取到BigInteger中,然后相乘,但是由于某些字节为负,所以我最终得到12 13 15 -12等并被卡住。 问题答案: 嗯,Java没有无符号字节的概念……该类型始终是带符号的,其值介于-128