Python: extraire des bits d'un octet

Je suis en train de lire un fichier binaire en python et la documentation pour le format de fichier dit:

Drapeau (en binaire)Sens

1 nnn nnnn Indique qu'il y a un octet de données à suivre
c'est à dupliquer nnn nnnn (127 maximum)
fois.

0 nnn nnnn Indique qu'il y a nnn nnnn octets de l'image
les données à suivre (127 octets maximum) et que
il n'existe pas de duplications.

n 000 0000 de Fin de ligne de champ. Indique la fin d'une ligne
record. La valeur de n peut être zéro ou un.
Notez que la fin de la ligne de champ est obligatoire et
qu'il est reflété dans la longueur de la ligne d'enregistrement
champs mentionnés ci-dessus.

Lors de la lecture du fichier que j'attends de l'octet, je suis à retourner 1 nnn nnnn où la nnn nnnn partie devrait être de 50.

J'ai été capable de faire cela en utilisant les suivantes:

flag = byte >> 7
numbytes = int(bin(byte)[3:], 2)

Mais la numbytes calcul se sent comme un bon marché une solution de contournement.

Puis-je faire de plus peu de math pour réaliser le calcul de numbytes?

Comment voulez-vous cette approche?

source d'informationauteur Evan Borgstrom