非常に大きなサイズ、たとえば600万ビットのビット配列を宣言するにはどうすればよいですか?
from bitarray import bitarray
a = bitarray(2**20)
http://pypi.python.org/pypi/bitarray/ で、このモジュールに関する詳細情報を確認できます。
この1ライナーは、バイトをTrue/Falseビット値のリストに変換します。 6Mビットではパフォーマンスが低下する場合がありますが、小さなフラグの場合は問題なく、追加の依存関係は必要ありません。
>>> flags = bytes.fromhex(b"beef")
>>> bits = [flags[i//8] & 1 << i%8 != 0 for i in range(len(flags) * 8)]
>>> print(bits)
[False, True, True, True, True, True, False, True, True, True, True, True, False, True, True, True]
を使用してbitarrayモジュールを取得する
pip install bitarray
次に、このコードはサイズ600万のビット配列を作成し、
from bitarray import bitarray
bit_array = bitarray(6000000)
以下を使用して、すべてのビットをゼロに初期化できます。
bit_array.setall(0)
特定のビット、たとえばビット番号25を1に設定するには、次のようにします。
bit_array[25]=1
非常に簡単に
bitarray60000 = 1<<60000
これにより、ビットシフト演算子を使用して心のコンテンツを作成できます。たとえば、位置2をTrueに設定すると、次のようになります。
bitarray60000 | 1<<2
位置2からビットを取得する
bitarray60000 & 1<<2
アイデアは非常にシンプルだと思います。いくつかの操作は難しいかもしれませんが。