我没有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,71,150,2,210
有大脑的人可以解释为什么这些不同吗?
非常感谢!
答案 0 :(得分:12)
Java使用带符号的字节,C#使用无符号。注意,所有值< 127匹配,值> 128被转换为负数。如果您将C#数组从byte
转换为sbyte
,则值将匹配。