web-dev-qa-db-fra.com

Comment créer un tableau de bits en Python?

Comment déclarer un tableau de bits de très grande taille, disons 6 millions de bits?

26
zheric
from bitarray import bitarray

a = bitarray(2**20)

Vous pouvez consulter plus d'informations sur ce module sur http://pypi.python.org/pypi/bitarray/

34
SJP

Le module bitstring peut aider:

from bitstring import BitArray
a = BitArray(6000000)

Cela prendra moins d'un mégaoctet de mémoire et il est facile de définir, lire, trancher et interpréter des bits. Contrairement au module bitarray, il s’agit de Python pur et fonctionne également pour Python 3.

Voir la documentation pour plus de détails.

24
Scott Griffiths

Cette ligne transforme les octets en une liste de valeurs de bits True/False. Peut-être pas performant pour 6M bits mais pour de petits drapeaux, cela devrait aller et ne nécessite aucune dépendance.

>>> 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

Obtenez le module bitarray en utilisant 

pip install bitarray

Ensuite, ce code créera un tableau de bits de taille 6 millions,

from bitarray import bitarray
bit_array = bitarray(6000000)

Vous pouvez initialiser tous les bits à zéro en utilisant

bit_array.setall(0)

Pour définir un bit particulier, par exemple le nombre de bits 25, sur 1, procédez comme suit:

bit_array[25]=1   
6
Tarun

Plutôt facilement

bitarray60000 = 1<<60000

Avec cela, vous pouvez utiliser l'opérateur bitshift pour votre contenu de coeur .

bitarray60000 | 1<<2

Obtenir un peu de la position 2

bitarray60000 & 1<<2

Je suppose que l'idée est assez simple. Bien que certaines opérations puissent être délicates.

1
Pavel Hanpari