从文件开头的偏移量开始解包4字节字
在Python中,如果我想跳到文件中的某个位置,比如说250字节,怎么才能在这个位置存储一个32位的二进制值呢?
我遇到的问题是,read()
这个函数返回的是一个字符串,我不太确定这样做后能否正确地移动到有效的位置。而且,当我尝试使用struct.unpack()
时,它要求的长度必须和我指定的格式相符。我该怎么才能只获取紧接着的数据,符合我指定的格式呢?还有,32位整数的格式是什么?举个例子,我写了一个超过32个字符的字符串,以为可以抓取前32位并把它们存储为一个32位的整数,使用'<qqqq'
,结果显然是错误的。
1 个回答
3
with open("input.bin","rb") as f:
f.seek(250) #offset
print struct.unpack("<l",f.read(4)) #grabs one little endian 32 bit long
如果你想要4个32位的整数,你可以这样做:
print struct.unpack("<llll",f.read(16))
如果你只是想获取下一个32位的整数:
print struct.unpack_from("<l",f)[0]