Comment créer un tableau de bits en Python?

Comment puis-je déclarer un tableau de bits d'une très grande taille, dire 6 millions de bits?

25

4 réponses

from bitarray import bitarray

a = bitarray(2**20)

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

32
répondu SJP 2012-07-26 12:25:04

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, découper et interpréter des bits. Contrairement au module bitarray, il est pur Python, plus il fonctionne pour Python 3.

Voir la documentation pour plus de détails.

23
répondu Scott Griffiths 2012-08-11 21:28:53

Récupère le module bitarray en utilisant

pip install bitarray

Ensuite, ce code va créer 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, disons le nombre de bits 25, à 1, procédez comme suit:

bit_array[25]=1   
5
répondu Tarun 2015-05-15 04:33:29

Ce one-liner convertit les octets en une liste de valeurs de bits True/False. Peut - être pas performant pour les bits 6M mais pour les petits drapeaux, il devrait être correct et n'a pas besoin de dépendances supplémentaires.

>>> 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]
5
répondu Felix Weis 2017-11-14 02:15:01