Faire une opération au niveau du bit sur octets

J'ai deux objets, a et b, chacun ne contenant qu'un seul octet en octets de l'objet.

Je suis en train de faire une opération au niveau du bit, afin d'atteindre les deux bits les plus significatifs (big-endian, donc vers la gauche).

a = sock.recv(1)
b = b'\xc0'
c = a & b

Cependant, il avec colère crache un TypeError dans mon visage.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'bytes' and 'bytes'

Est-il possible que je peux effectuer une opération sur deux octets, sans avoir à penser à l'hôte du système boutisme?

bytes est défini comme immuable séquence d'entiers, c'est une forme de liste (en gros une const char[]). Faire un bit à bit & sur une liste-like ne serait pas très sensés.
Lors de chacun des octets de l'objet ne contient qu'un seul octet, puis de l'endianness est dénuée de sens.
Si vous avez une grande chaîne d'octets, il sera plus efficace d'utiliser c = (int.from_bytes(a, 'big') & int.from_bytes(b, 'big')).to_bytes(max(len(a), len(b)), 'big').

OriginalL'auteur Chloride Cull | 2014-03-23