从文件开头的偏移量开始解包4字节字

1 投票
1 回答
1752 浏览
提问于 2025-04-18 15:03

在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]

撰写回答