Mak*_*tar 8 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() );
Run Code Online (Sandbox Code Playgroud)
结果是3645145936617393160
当我在C#中运行时
//unsigned values (signed&0xff)
byte[] bytes = new byte[] { 50, 150, 40, 234, 162, 137, 204, 8 };
long l = BitConverter.ToInt64(bytes, 0);
System.Console.Write(String.Format("{0}\n", l));
System.Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
结果是634032980358633010
你能帮我理解一下吗?
谢谢!
SLa*_*aks 12
这是字节序的差异.
如果你反转字节数组,它按预期工作:
BitConverter.ToInt64(new byte[] { 8, 204, 137, 162, 234, 40, 150, 50 }, 0)
Run Code Online (Sandbox Code Playgroud)
您可以通过调用在Java中设置字节序bb.order(ByteOrder.LITTLE_ENDIAN).
顺便说一下,玩这些东西的最简单方法是使用LINQPad.
| 归档时间: |
|
| 查看次数: |
6438 次 |
| 最近记录: |