我在理解如何读取并返回文件中某个偏移位置的值时遇到一些麻烦。
例如,我从我的十六进制编辑器中知道偏移量是D768,值是32位。那么如何读取这个值并将其显示在标签中。
任何帮助都将不胜感激。
答案 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跳过,直到抵消,该课程可能会帮助你。