【发布时间】:2016-07-11 17:24:07
【问题描述】:
我有一个独特的问题(至少据我在 SO 和谷歌搜索上花费的时间来看)。
我有一个包含 0 和 1 个不同列表长度的整数的列表,例如:
[0, 1, 0, 0 ,1, 0, 0, 0, 0, 0, 0...]
我正在将此列表转换为bitarray,如下所示:
from bitarray import bitarray
def binWise(sequence):
newseq = bitarray(sequence)
return newseq
这会返回格式如下的二进制输出:
b'01001000001'
但是,当我尝试将其作为二进制文件直接写入文件时,我得到了
TypeError: 'bitarray' does not support the buffer interface
有没有办法将二进制数据直接输出到二进制文件? 我根本不介意第 3 方模块的建议。但越简单越好。
【问题讨论】:
-
你是用二进制模式打开文件吗?
-
@JonClements:这就是异常所暗示的,实际上。
-
如果bitarray的长度不是8的倍数,你想发生什么?
-
那么您希望写入文件的内容是什么?
'0'和'1'字符,还是每 8 位一个字节?例如,01001000是十六进制的 0x48,或 ASCII 的'H',因此在这种情况下您可以将'H'写入文件。