Comment déclarer un tableau de bits de très grande taille, disons 6 millions de bits?
from bitarray import bitarray
a = bitarray(2**20)
Vous pouvez consulter plus d'informations sur ce module sur http://pypi.python.org/pypi/bitarray/
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.
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]
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
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.