【发布时间】:2014-01-19 18:37:05
【问题描述】:
我有 23 位表示为一个字符串,我需要将此字符串作为 4 个字节写入二进制文件。最后一个字节始终为 0。以下代码有效(Python 3.3),但感觉不是很优雅(我对 Python 和编程还比较陌生)。你有什么让它变得更好的秘诀吗?似乎 for 循环可能很有用,但我如何在循环中进行切片而不得到 IndexError?请注意,当我将位提取到一个字节中时,我颠倒了位顺序。
from array import array
bin_array = array("B")
bits = "10111111111111111011110" #Example string. It's always 23 bits
byte1 = bits[:8][::-1]
byte2 = bits[8:16][::-1]
byte3 = bits[16:][::-1]
bin_array.append(int(byte1, 2))
bin_array.append(int(byte2, 2))
bin_array.append(int(byte3, 2))
bin_array.append(0)
with open("test.bnr", "wb") as f:
f.write(bytes(bin_array))
# Writes [253, 255, 61, 0] to the file
【问题讨论】:
标签: python python-3.x