Schreiben von bits in eine binäre Datei

Habe ich 23 bits als Zeichenfolge dargestellt, und schreiben brauche ich diesen string in eine Binärdatei als 4 bytes. Das Letzte byte ist immer 0. Der folgende code funktioniert (Python 3.3), aber es fühlt sich nicht sehr elegant (ich bin Recht neu bei Python und die Programmierung). Haben Sie irgendwelche Tipps, die machen es besser? Es scheint eine for-Schleife, die nützlich sein könnten, aber wie mache ich das schneiden innerhalb der Schleife, ohne dabei einen IndexError? Beachten Sie, dass, wenn ich zu extrahieren der bits in einem byte, die ich in umgekehrter bit-Reihenfolge.

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
InformationsquelleAutor Olav | 2014-01-19
Schreibe einen Kommentar