写入位(来自位串)以在 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)
我是 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)