我没有使用 Java 的经验,所以这让我头疼:-
Java 代码:
long foo = 1234567890;
byte[] boo = ByteBuffer.allocate(8).putLong(foo).array();
C#代码:
long foo = 1234567890;
byte[] bar = BitConverter.GetBytes(foo);
// reverse to match Java's Big Endianess
byte[] boo = bar.Reverse().ToArray();
在 Java 示例中,boo = 0, 0, 0, 0, 73, -106, 2, -46
但是在 C# 中,boo = 0, 0, 0, 0, 73, 150, 2, 210
有没有脑洞大点的人,解释一下为什么会有所不同?
非常感谢!
最佳答案
Java 使用有符号字节,C# 使用无符号字节。请注意,所有小于 127 的值都匹配,大于 128 的值将转换为负数。如果将 C# 数组从 byte
转换为 sbyte
,则值将匹配。
关于c# - 将 long 转换为字节数组时 C# 和 Java 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476939/