it-swarm.com.de

Wie erstelle ich ein Array von Bits in Python?

Wie kann ich ein sehr großes Array ausgeben, etwa 6 Millionen Bits?

26
zheric
from bitarray import bitarray

a = bitarray(2**20)

Weitere Informationen zu diesem Modul finden Sie unter http://pypi.python.org/pypi/bitarray/

34
SJP

Das Bitstring Modul kann helfen:

from bitstring import BitArray
a = BitArray(6000000)

Dies erfordert weniger als ein Megabyte Speicher und es ist einfach, Bits zu setzen, zu lesen, zu schneiden und zu interpretieren. Im Gegensatz zum Bitarray-Modul ist es reines Python und es funktioniert auch für Python 3.

Siehe die Dokumentation für weitere Details.

24
Scott Griffiths

Dieser Einzeiler konvertiert Bytes in eine Liste von True/False-Bitwerten. Für 6M-Bits möglicherweise nicht performant, für kleine Flags sollte dies jedoch in Ordnung sein und erfordert keine zusätzlichen Abhängigkeiten.

>>> 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]
7
Felix Weis

Holen Sie sich das Bitarray-Modul mit 

pip install bitarray

Dann wird dieser Code ein Bit-Array der Größe 6 Millionen erstellen.

from bitarray import bitarray
bit_array = bitarray(6000000)

Sie können alle Bits mit Null initialisieren

bit_array.setall(0)

So setzen Sie ein bestimmtes Bit, sagen Sie Bit Nummer 25, auf 1:

bit_array[25]=1   
6
Tarun

Ziemlich einfach

bitarray60000 = 1<<60000

Damit können Sie den Bit-Shift-Operator für Ihren Herz-Inhalt verwenden. __ Position 2 wäre beispielsweise True:

bitarray60000 | 1<<2

Bit von Position 2 bekommen

bitarray60000 & 1<<2

Ich denke, die Idee ist ziemlich einfach. Obwohl einige Operationen schwierig sein können.

1
Pavel Hanpari