1

请让我知道将 8 位值写入 python 文件的最佳方法。值可以在 0 到 255 之间。我打开文件如下:

f = open('temp', 'wb')

假设我正在写的值是分配给变量的 0 到 255 之间的 int,例如

x = 13

这不起作用:

f.write(x)

..正如您的专家所知道的那样行不通。python 抱怨无法将整数写入缓冲区接口。作为一种解决方法,我将其写为十六进制数字。因此:

f.write(hex(x))

..这可行,但不仅空间效率低,而且显然不是正确的python方式。请帮忙。谢谢。

4

3 回答 3

3

尝试显式创建一个bytes对象:

f.write(bytes([x]))

您还可以输出一系列字节,如下所示:

f.write(bytes([65, 66, 67]))
于 2013-08-13T07:06:10.150 回答
1

作为替代方案,您可以使用struct模块...

import struct
x = 13
with open('temp', 'wb') as f:
    f.write(struct.pack('>I', x))  # Big-endian, unsigned int

要从文件中读取 x...

with open('temp', 'rb') as f:
    x, = struct.unpack(">I", f.read())
于 2013-08-13T07:15:01.617 回答
0

你只需要写一个bytes数据类型的项目,而不是整数。

于 2013-08-13T07:12:04.040 回答