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

Mittwoch 13. Juni 2018, 11:29

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: 218
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 13. Juni 2018, 12:38

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.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
okmog
User
Beiträge: 2
Registriert: Mittwoch 13. Juni 2018, 08:50

Mittwoch 13. Juni 2018, 14:45

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: 218
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 13. Juni 2018, 14:48

Code: Alles auswählen

In [5]: import binascii

In [6]: binascii.hexlify((b'\x01\x13t'))
Out[6]: '011374'[python]
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
Benutzeravatar
snafu
User
Beiträge: 5450
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Mittwoch 13. Juni 2018, 18:42

Code: Alles auswählen

' '.join(map(hex, b'\x01\x13t'))
shcol (Repo | Doc | PyPi)
Antworten