Seite 1 von 1

Byte-Array

Verfasst: Mittwoch 13. Juni 2018, 11:29
von okmog
Hallo,

ich würde gern ein Byte-Array manuell Hex-Werte zuweisen:

Code: Alles auswählen

test = bytes(3)
barray = bytearray(test)

# construct example array
barray[0] = 0x01
barray[1] = 0x13
barray[2] = 0x74

print(barray) 
Ausgabe:

Code: Alles auswählen

bytearray(b'\x01\x13t')
Kann mir jemand sagen, warum hex 0x74 als t' ausgegeben wird, anstatt als 0x74? Ist das 0x74 und wird nur vom python-Intpreter so dargestellt oder wandelt er den hex in ein anderes Format um? Wo liegt der Fehler?

Wäre um ein klärende Antwort sehr dankbar.

Viele Grüße,
Okmog

Re: Byte-Array

Verfasst: Mittwoch 13. Juni 2018, 12:38
von __blackjack__
0x74 ist in der ASCII-Tabelle der Wert für ein kleines t. Da werden auch keine ”hex” in ein anderes Format umgewandelt, sondern Zahlen. '\x01' steht da ja auch nicht im Speicher, sondern die Zahl 1 irgendwie maschinenabhängig kodiert.

Re: Byte-Array

Verfasst: Mittwoch 13. Juni 2018, 14:45
von okmog
Danke für die Antwort.
Wie kann ich Python dazu bringen mir nur die hex-Werte anzuzeigen anstelle die ASCII-Zeichen?

Schon Mal besten Dank!
Olli

Re: Byte-Array

Verfasst: Mittwoch 13. Juni 2018, 14:48
von __blackjack__

Code: Alles auswählen

In [5]: import binascii

In [6]: binascii.hexlify((b'\x01\x13t'))
Out[6]: '011374'[python]

Re: Byte-Array

Verfasst: Mittwoch 13. Juni 2018, 18:42
von snafu

Code: Alles auswählen

' '.join(map(hex, b'\x01\x13t'))