1

我最近重新开始编程,并决定作为一个项目让我继续前进并激励我为辐射 2 编写一个角色编辑器。我遇到的问题是在最初的几个字符串之后我似乎无法拉动我需要使用文件偏移量或结构的数据。

这就是我正在做的事情。我正在使用的文件是 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

我已经确认了偏移量,但它并没有像预期的那样返回任何东西。

4

1 回答 1

0

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

例如,test[0x08:0x0A]将根据h代码的要求为您提供两个字节。

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

于 2013-09-23T08:19:15.967 回答