Java - 在给定的偏移处读取字节

时间:2012-03-17 11:36:12

标签: java offset

我在理解如何读取并返回文件中某个偏移位置的值时遇到一些麻烦。

例如,我从我的十六进制编辑器中知道偏移量是D768,值是32位。那么如何读取这个值并将其显示在标签中。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:6)

我认为java.io.RandomAccessFile是你的新朋友: - )

请注意以下代码,但尚未经过测试。

RandomAccessFile raf = new RandomAccessFile("foo.bin", "r");
raf.seek(0xd768);
int value = raf.read();

答案 1 :(得分:1)

使用DataInputStream类。打开文件,使用skipBytes(offset)对其进行定位,然后调用readInt()。这将从你使用的偏移开始给你一个32位。

(注意,这假设整数在文件中以最高有效字节表示。)

答案 2 :(得分:1)

使用skipBytes到达指定位置。要读取32位数字,如果值为big-endian,则可以使用DataInputStream。如果是小端,则需要手动将四个字节转换为int

int value = (int)bytes[0]
        | ((int)bytes[1] << 8)
        | ((int)bytes[2] << 16)
        | ((int)bytes[3] << 24);

答案 3 :(得分:0)

检查RandomAccessFile.skipBytes跳过,直到抵消,该课程可能会帮助你。