Python3 Bytes in hexadezimale Zeichenfolge

8

Ich habe ein Byte-Objekt:

%Vor%

Wie bekomme ich eine Zeichenfolge davon? So:

%Vor%

Ich habe es versucht:

%Vor%

Gibt es keine Möglichkeit dies zu tun?

    
MightyPork 19.11.2014, 17:42
quelle

2 Antworten

8

Sie wollen hier einfach nur aus ASCII entschlüsseln, Ihre Bytefolge ist bereits und stellt hexadezimale Zahlen in ASCII-Zeichen dar:

%Vor%

Alles, was Sie versucht haben, interpretiert die Bytes als numerische Daten, entweder als hexadezimale Zahlen, die Bytes darstellen, oder als Bytes, die numerische Daten darstellen.

Ihr erster Versuch nimmt also den Wert 06 als Hexadezimalzahl und wandelt diesen in den Bytewert 6 um, und 7b wird in den Bytewert 123 umgewandelt, der der ASCII-Codepunkt für { ist. Zeichen.

Beim zweiten Versuch konvertieren Sie jedes Byte in eine hexadezimale Darstellung seines numerischen Werts. Das 0 -Byte wird als die ganze Zahl 48 (der ASCII-Codepunkt für das '0' -Zeichen) interpretiert, der in Hexadezimal% 30 ist. '6' ist 54, oder 36 in Hex usw.

    
Martijn Pieters 19.11.2014, 17:43
quelle
6

Die Darstellung bytes kann verwirrend sein. b'0607' ist nicht dasselbe wie bytes([0x06,0x07] ). b'0607' ist eigentlich 4 Bytes [48,54,48,55] , wobei 48 der ASCII Code für 0 , etc ist.

%Vor%

als solches b'0607' ist bereits ein ASCII-String, wird aber als bytes dargestellt, wenn Sie es in str konvertieren wollen, müssen Sie b'0607'.decode("ascii") (damit Sie eine str aus diesen Bytes konstruieren, die sie wie ASCII interpretieren) Code (wie sie sind)).

Im Allgemeinen konvertieren Sie bytes in eine hexadezimale Zeichenfolge wie folgt:

%Vor%     
ecerulm 08.06.2015 17:31
quelle

Tags und Links