我有一个int类型的变量,我希望将它写入二进制文件中的一个位置:
这样的事情:
with open("file","wb") as f:
f.seek(position)
f.write(variable)
但是变量是在这个位置占用4个字节。写作时如何表达?
这就是我的阅读方式:
def read(self, position, length):
self.file.seek(position)
a=self.file.read(length)
data=0
for i in range(length):
data=data + (a[i])*pow(256,i)
return data
答案 0 :(得分:4)
使用Python struct模块。示例:struct.pack("<I", 3)
该示例将整数值3转换为无符号整数little-endian。
以下是使用原生大小和对齐方式读取和写入本机整数的函数。
import struct
def write_int(f, position, x):
f.seek(position)
f.write(struct.pack("i", x))
_int_length = len(struct.pack("i", 0)) # find out size of native integer
def read_int(f, position):
f.seek(position)
return struct.unpack("i", f.read(_int_length))