我有一个布尔字符串,我想创建一个二进制文件使用这些布尔作为位。这就是我要做的:

# 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这是一个自然的容器,也可以直接写入您的文件。
如果合适的话,当然可以使用库,比如bitarraybitstring。用后者你可以说
bitstring.Bits(bin=boolString).tofile(outputFile)

关于python - 将 bool 值字符串写入二进制文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12672165/

10-11 07:33