我正在尝试使用Java中的RandomAccessFile读取二进制文件。
问题是 - 它没有返回正确的值。如果您打开我的文件,请查看Hex Workshop的这个sceencap:
如果你把它们读作int32,你会看到前4个字节是82。
当我打电话时,我的节目正以1375731712的形式阅读:
raf.readInt();
在我看来,我的程序正在向后读取这些字节(与endian相关吗?)。
如何正确阅读它们以及Hex Workshop如何知道使用哪种字节顺序?
答案 0 :(得分:0)
Java正在读取int作为一个大端,但它被写为文件为little-endian。
1375731712 -> 01010010 00000000 00000000 00000000 (big-endian) 82 -> 00000000 00000000 00000000 01010010 (big-endian) 1375731712 -> 00000000 00000000 00000000 01010010 (little-endian) 82 -> 01010010 00000000 00000000 00000000 (little-endian)
维基百科:Endianness。