2016-09-19 3 views
-1

Je souhaite supprimer les 2 bits les moins significatifs de chaque entier de 16 bits d'un bitarray. Ils sont stockés comme ceci:Manipulation de bitarray Python

010101**00**10010101101100**00**10101010..... 

(. Les zéros entre les astérisques seront supprimés Il y a deux d'entre eux tous les 16 bits (en ignorant le premier)).

Je peux simplement les éliminer avec un régulier pour les index de contrôle de boucle (le 7ème et le 8ème tous les 16 bits).

Mais ... existe-t-il un autre pythonic pour ce faire? Je pense à une notation de tranche ou peut-être à des listes de compréhension. Peut-être que je pourrais diviser chaque nombre par 4 et encoder chacun avec 14 bits (s'il y a un moyen de le faire).

Répondre

2

Vous pouvez effacer les bits assez facilement avec le masquage. Si vous voulez effacer les bits 8 et 7, vous pouvez le faire comme ceci:

a = int('10010101101100',2) 
mask = ~((1 << 7) | (1 << 8)) 
bin(a&mask) 

plus d'informations sur le masquage de here!