【问题标题】:Writing bits (from a bit string) to create a binary file in python写入位(从位字符串)以在 python 中创建二进制文件
【发布时间】:2020-05-20 17:54:43
【问题描述】:
我是 python 新手。这是我正在努力实施的。
我有一个很长的位串“1010101010101011111010101010111100001101010101011 ...”。
我想把它写成比特并使用python创建一个二进制文件。
(稍后我想用 IDA 反汇编它,这对于这个问题并不重要)。
有什么方法可以写入位级别的文件(作为二进制文件)?还是我必须先将其转换为字节,然后逐字节写入?什么是最好的方法。
【问题讨论】:
标签:
python
binary-data
bitstring
【解决方案1】:
是的,您必须先将其转换为字节,然后将这些字节写入文件。按字节工作可能也是控制字节顺序(大端与小端)等的最佳方法。
您可以使用int("10101110", 2) 轻松地将位字符串转换为数值。然后使用bytearray 创建所有字节值的序列。结果将如下所示:
s = "1010101010101011111010101010111100001101010101011"
i = 0
buffer = bytearray()
while i < len(s):
buffer.append( int(s[i:i+8], 2) )
i += 8
# now write your buffer to a file
with open(my_file, 'bw') as f:
f.write(buffer)