Python ist3 bytes in hex-string
Habe ich ein bytes-Objekt:
a = b'067b'
Wie bekomme ich einen string von Ihr? Wie diese:
"067b"
Ich versucht habe:
In [3]: str(a)
Out[3]: "b'067b'"
In [4]: import codecs
In [5]: codecs.decode(a,'hex')
Out[5]: b'\x06{'
In [6]: import binascii
In [7]: binascii.b2a_hex(a)
Out[7]: b'30363762'
In [8]: binascii.hexlify(a)
Out[8]: b'30363762'
Ist es keine Möglichkeit, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie wollen einfach nur zu entschlüsseln von ASCII-hier, dein bytestring ist bereits darstellen hexadezimale zahlen in ASCII-Zeichen:
Alles, was Sie versucht, ist die Interpretation der bytes, die als numerische Daten statt, entweder als hexadezimale zahlen repräsentiert bytes, oder bytes, die numerische Daten.
Also Ihrem ersten Versuch nimmt der Wert
06
als hexadezimal-Zahl und Wendungen, die in dem byte-Wert6
, und7b
sich in der byte-Wert 123, die die ASCII-Codepunkt für das{
Charakter.In Ihrem zweiten Versuch, die Sie konvertieren jedes byte in eine hexadezimale Darstellung seiner numerischen Wert. Die
0
byte interpretiert wird als integer-Zahl 48 (ASCII-Codepunkt für das'0'
Charakter), die30
im Hexadezimalformat.'6'
54, oder36
in hex, etc.b'067b'
ist ASCII. Ist es nicht wirklich zwei bytes, '06' und '7b'? Das würd mir in der Tat '\x06 {', wenn Sie als ASCII-Werte. Was ist hier wirklich passiert?0
,6
,7
undb
. Dieb'...'
literal notation nicht hexadezimale Zeichen, es dauert ASCII-Zeichen.b'\x06\x7b'
(z.B. Verwendung\xhh
hex entgeht), oder verwenden Sie diebytes()
- Funktion und pass in eine Sequenz von ganzen zahlen:bytes([0x06, 0x7b])
mit Ganzzahlen angegeben als hex-Literale.pyudev
und wollte, um es anzuzeigen. Ich bin mir nicht bauen. Dies war nur das erste mal, dass ich gesehen habe, die b'blah' notation..Den
bytes
Darstellung kann verwirrend sein.b'0607'
ist nicht das gleiche wiebytes([0x06,0x07]
).b'0607'
ist eigentlich 4 bytes[48,54,48,55]
wo 48 ist der ascii-code für0
usw.als solche
b'0607'
ist bereits eine ascii-Zeichenfolge, sondern vertreten alsbytes
wenn Sie wollen, es zu konvertieren, umstr
müssen Sieb'0607'.decode("ascii")
(so, dass konstruieren Sie eine str von diese bytes zu interpretieren wie der ascii-code (wie Sie sind)).Im Allgemeinen, Sie konvertieren
bytes
auf hex-string: