写入位(来自位串)以在 python 中创建二进制文件

Writing bits (from a bit string) to create a binary file in python

我是 python 的新手。这是我正在努力实现的。 我有一个很长的位串“1010101010101011111010101010111100001101010101011 ...”。 我想把它写成位并使用 python 创建一个二进制文件。 (后来我想用IDA反汇编这个,这对这个问题并不重要)。

有什么方法可以以位级别(二进制)写入文件?还是我必须先将它转换为字节,然后逐字节写入?什么是最好的方法。

是的,您必须先将其转换为字节,然后将这些字节写入文件。在每个字节的基础上工作可能也是控制字节顺序(大端与小端)等的最佳主意。

您可以使用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)