如何在Python中以特定字节数写入整数(文件写入)

3 投票
2 回答
8305 浏览
提问于 2025-04-15 19:28

假设我需要把一些整数,比如1024、512、10240或900000,存储到一个文件里,但有个条件,就是我只能用4个字节(不能少也不能多)。但是在用Python的write方法写文件时,它把这些数字存成了“1024”、“512”、“10240”,也就是以ASCII值的形式存储。我想直接存储它们的二进制值。

任何帮助都非常感谢。

2 个回答

4

struct模块可以解决这个问题。

>>> import struct
>>> f = open('binary.bin','wb')
>>> f.write(struct.pack("l",1024))
>>> f.close()

vinko@parrot:~$ xxd -b binary.bin
0000000: 00000000 00000100 00000000 00000000                    ....
13

使用 struct 模块

>>> import struct
>>> struct.pack("i",1024)
'\x00\x04\x00\x00'
>>> struct.pack("i",10240)
'\x00(\x00\x00'
>>> struct.pack("i",900000)
'\xa0\xbb\r\x00'

在Python3中,你可以使用整数的 to_bytes 方法。这里的1024加括号只是为了避免它被当作浮点数解析,这样会导致语法错误。

>>> (1024).to_bytes(4, "big")
b'\x00\x00\x04\x00'
>>> (1024).to_bytes(4, "little")
b'\x00\x04\x00\x00'

撰写回答