Gibt es einen besseren Weg, als int (byte_buffer.encode ( 'hex'), 16)
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?
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.