python - python 读取带有偏移量和结构的二进制文件

  显示原文与译文双语对照的内容
0 0

最近我已经进入编程,并决定为我提供一个项目,并且我打算编写一个字符编辑器。 我的问题是前几个字符串,我看不到使用文件偏移或者结构所需的数据。

我就是这么做的。 我正在使用的文件是 www.retro-gaming-world.com/SAVE.DAT


import struct
savefile = open('SAVE.DAT', 'rb')
try:
 test = savefile.read()
finally:
 savefile.close()

print 'Header: ' + test[0x00:0x18] # returns the save files header description"'FALLOUT SAVE FILE '"
print"Character Name:" + test[0x1D:0x20+4] Returns the characters name"f1nk"
print"Save game name:" + test[0x3D:0x1E+4] # isn't returning the save name"church" like expected
print"Experience:" + str(struct.unpack('>h', test[0x08:0x04])[0]) # is expected to return the current experience but gives the follosing error

输出:


Header: FALLOUT SAVE FILE
Character Name: f1nk
Save game name: 
 Traceback (most recent call last):
 File"test", line 11, in <module>
 print"Experience:" + str(struct.unpack('>h', test[0x08:0x04])[0])
 struct.error: unpack requires a string argument of length 2

我已经确认了偏移量,但它没有返回任何期望的东西。

时间: 原作者:

0 0

test[0x08:0x04] 是空字符串,因为结束索引小于起始索引。

例如 test[0x08:0x0A] 会根据 h 代码的要求给你两个字节。

字符串切片的语法为 s[start:end] 或者 s[start:end:step]链接到文档

原作者:
...