Byte-Array

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
okmog
User
Beiträge: 2
Registriert: Mittwoch 13. Juni 2018, 08:50

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
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
okmog
User
Beiträge: 2
Registriert: Mittwoch 13. Juni 2018, 08:50

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
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Code: Alles auswählen

In [5]: import binascii

In [6]: binascii.hexlify((b'\x01\x13t'))
Out[6]: '011374'[python]
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Code: Alles auswählen

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