Java和C#-字节数组到长转换的差异

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 你能帮我理解这一点吗? 谢谢 这是不同的 如果反转字节数组

这对我来说很奇怪: 当我用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

你能帮我理解这一点吗?
谢谢

这是不同的

如果反转字节数组,它将按预期工作:

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)