RandomAccessFile没有正确读取整数

时间:2015-01-18 13:50:14

标签: java

我正在尝试使用Java中的RandomAccessFile读取二进制文件。

问题是 - 它没有返回正确的值。如果您打开我的文件,请查看Hex Workshop的这个sceencap:

enter image description here

如果你把它们读作int32,你会看到前4个字节是82。

当我打电话时,我的节目正以1375731712的形式阅读:

raf.readInt();

在我看来,我的程序正在向后读取这些字节(与endian相关吗?)。

如何正确阅读它们以及Hex Workshop如何知道使用哪种字节顺序?

1 个答案:

答案 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