8
Đây là xa lạ với tôi: khi tôi chạy trong JavaJava và C# - byte mảng chênh lệch chuyển đổi dài
byte[] data = new byte[] { 50, -106, 40, -22, -94, -119, -52, 8 };
ByteBuffer bb = ByteBuffer.wrap(data);
System.out.println(bb.getLong());
kết quả là 3645145936617393160
khi tôi chạy trong 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();
kết quả là 634032980358633010
Bạn có thể giúp tôi hiểu điều này không?
Cảm ơn!
Cụ thể, Java lưu trữ nội bộ như Big Endian, trong khi bộ vi xử lý x86 là Little Endian ... và có lẽ thiết kế của .NET phản ánh điều này. – Powerlord
Cảm ơn, rất tuyệt! –