Mache eine bitweise operation auf Byte

Habe ich zwei Objekte, a und b, die jeweils ein einzelnes byte in ein Byte-Objekt.

Ich versuche zu tun, eine bitweise operation auf diese zu bekommen, die zwei höchstwertigen bits ("big-endian", also auf der linken Seite).

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

Aber es wütend, spuckt ein TypeError in mein Gesicht.

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

Gibt es eine Möglichkeit, ich kann das ausführen einer UND-operation auf die zwei bytes, die zimmerreserviereung, ohne das Sie denken das host-system ist endianness?

  • bytes ist definiert als eine unveränderliche Folge von ganzen zahlen, D. H. es ist eine Liste, wie (im Grunde ein const char[]). Mache eine bitweise & auf einer Liste-wie wäre das eigentlich nicht sensical.
  • Wenn jedes Byte Objekt enthält nur ein byte, dann endianness, ist sinnlos.
  • Wenn Sie eine große byte-string, wird es effizienter zu nutzen c = (int.from_bytes(a, 'big') & int.from_bytes(b, 'big')).to_bytes(max(len(a), len(b)), 'big').
Schreibe einen Kommentar