2

入力として 4 バイトのファイルがあり、出力したいとします。

bit + first two bytes + bit + last two bytes

追加されたビットは単なるフラグです。新しいファイルがわずか5バイト(2ビット+ 4バイト〜= 5バイト)になるように(組み込み関数のみを使用して)Pythonでこれを行うにはどうすればよいですか。

file.read(x)などの I/O 操作についてはよく知っていますが、ビットの追加方法がよくわかりません。

編集bitarray: Python ライブラリを使用してこの問題を解決できました。このモジュールは、私が望んでいたすべてのことをサポートしています:

  • を使用して、ファイルからビット配列にバイトを読み取りますfromfile()
  • を使用してビットを追加append(True/False)
  • frombytes()Python標準struct モジュールを使用して特定のサイズの変数を追加します。
  • を使用してビット配列をファイルに書き込みます(必要に応じてパディングを使用)tofile()

python-bitstringモジュールを使用して同様の結果を得ることができます。

4

2 に答える 2

2

ビット単位の演算子を使用する必要があります

flag1 = 1
flag2 = 1
flag1 = flag1
flag2 = flag2 << 17 # (2 bytes + 1 bit under it)  
byte1 = byte1 << 1  # (1 bit )
byte2 = byte2 << 18 # (2 bytes + 2 bits underit)

out = flag1 & flag2 & byte1 & byte2 # stack them up
于 2013-10-26T19:51:46.697 に答える
1

Use the struct module to pack the bits and bytes into a string, then write it to a file.

于 2013-10-26T18:20:40.613 に答える