Java和C#-字节数组到长转换的差异
这对我来说很奇怪: 当我用Java运行时Java和C#-字节数组到长转换的差异,c#,java,numbers,bytearray,C#,Java,Numbers,Bytearray,这对我来说很奇怪: 当我用Java运行时 byte[] data = new byte[] { 50, -106, 40, -22, -94, -119, -52, 8 }; ByteBuffer bb = ByteBuffer.wrap( data ); System.out.println( bb.getLong() ); 结果是3645145936617393160 当我在C中运行时# 结果是634032980358633010 你能帮我理解这一点吗? 谢谢 这是不同的 如果反转字节数组
byte[] data = new byte[] { 50, -106, 40, -22, -94, -119, -52, 8 };
ByteBuffer bb = ByteBuffer.wrap( data );
System.out.println( bb.getLong() );
结果是3645145936617393160
当我在C中运行时#
结果是634032980358633010
你能帮我理解这一点吗?谢谢 这是不同的 如果反转字节数组,它将按预期工作:
BitConverter.ToInt64(new byte[] { 8, 204, 137, 162, 234, 40, 150, 50 }, 0)
您可以通过调用来设置Java中的endianness
顺便说一句,使用这些东西最简单的方法就是使用。具体来说,Java在内部将东西存储为Big-Endian,而x86处理器是Little-Endian。。。据推测.NET的设计反映了这一点。
BitConverter.ToInt64(new byte[] { 8, 204, 137, 162, 234, 40, 150, 50 }, 0)