Frage

In Python, ich bin ständig die folgende Sequenz mit einem ganzzahligen Wert von einem Byte-Puffern zu erhalten (in Python ist dies ein str).

Ich erhalte die Puffer aus der struct.unpack () Routine. Als ich auspacken einen ‚char‘ mit

byte_buffer, = struct.unpack('c', raw_buffer)
int_value = int( byte_buffer.encode('hex'), 16 )

Gibt es einen besseren Weg?

War es hilfreich?

Lösung

  

Begrenzt auf 1 Byte - Noah Campbell 18 Minuten vor

Der beste Weg, dies zu tun, dann ist es, eine Struktur Entpacker zu instanziiert.

from struct import Struct

unpacker = Struct("b")
unpacker.unpack("z")[0]

Beachten Sie, dass Sie „b“ auf „B“ ändern können, wenn Sie ein Byte ohne Vorzeichen wollen. Auch Endian-Format ist nicht erforderlich.

Für alle anderen, die ein Verfahren zur unbegrenzten ganzen Zahlen wissen will, erstellen Sie eine Frage, und sagen Sie mir in den Kommentaren.

Andere Tipps

Die struct Modul ist gut an Binärdaten auszupacken.

int_value = struct.unpack('>I', byte_buffer)[0]

Wenn wir reden über den Integer-Wert eines Bytes bekommen, dann wollen Sie diese:

ord(byte_buffer)

Kann nicht verstehen, warum es nicht schon vorgeschlagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top