我有一个布尔字符串,我想创建一个二进制文件使用这些布尔作为位。这就是我要做的:
# first append the string with 0s to make its length a multiple of 8
while len(boolString) % 8 != 0:
boolString += '0'
# write the string to the file byte by byte
i = 0
while i < len(boolString) / 8:
byte = int(boolString[i*8 : (i+1)*8], 2)
outputFile.write('%c' % byte)
i += 1
但这会一次生成1个字节的输出,而且速度很慢。有什么方法更有效呢?
最佳答案
如果你先计算所有字节,然后把它们写在一起,会更快。例如
b = bytearray([int(boolString[x:x+8], 2) for x in range(0, len(boolString), 8)])
outputFile.write(b)
我也在使用
bytearray
这是一个自然的容器,也可以直接写入您的文件。如果合适的话,当然可以使用库,比如bitarray和bitstring。用后者你可以说
bitstring.Bits(bin=boolString).tofile(outputFile)
关于python - 将 bool 值字符串写入二进制文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12672165/