我有一个保存游戏文件,我试图通过使用十六进制偏移量读取文件来解析出所有的字符属性。自从该纯文本以来,我能够正确地获取所有字符串,但是我在解析正在处理的二进制部分时遇到了问题。python - 使用结构解析二进制文件中的数据
我敢肯定,我在右数据正在读,但是当我解开我得到意想不到的字符串(不正确)输出
我正在使用的文件是www.retro-gaming- world.com/SAVE.DAT
import struct
infile = open('SAVE.DAT','rb')
try:
buff = infile.read()
finally:
infile.close
infile.seek(0x00,0)
print "Save Signature: " + infile.read(0x18)
print "Save Version: " + str(struct.unpack('>i',buff[0x18:0x18+4])[0])
infile.seek(0x1C,0)
print "The letter R: " + infile.read(0x01)
infile.seek(0x1D,0)
print "Character Name: " + infile.read(0x20)
infile.seek(0x3D,0)
print "Save Game Name: " + infile.read(0x1E)
print "Save game day: " + str(struct.unpack('>i',buff[0x5B:0x5B+4])[0])
print "Save game month: " + str(struct.unpack('>i',buff[0x5D:0x5D+4])[0])
print "Save game year: " + str(struct.unpack('>i', buff[0x5F:0x5F+4])[0])
我有两个不同的问题,要么返回错误的数据,或者当我试图解开一些字段我得到一个错误的字符串不够长,我可以阅读更多,但一天中的月份和年份分别只有2和4字节,并且是整数,我不确定我是否以正确的方式开展这项工作,我相信我会获得正确的领域,如果不完全,我正在解压或处理数据。
版本应该回到0100 日应返回21 一个月后应该返回09 今年应该回到2013
究竟会收到错误的里尔,有另一种方式或者一种更好的方式去了解从解析领域二进制?
开始寻找到它;我在最后一行计算了一个错字; sturct - > struct – Faultier
我修复了代码中的错误,但是在理解它是什么时我没有取得任何进展,我得到错误导致我得到不正确的输出字段 – user2806298