2016-12-14 4 views
1

Ich bin Python nicht vertraut, und ich muss von 2.7 zu 3.5 portieren. In 2.7:Port unhexlify von Python 2.7 zu Python 3.5

>>> unhexlify('2FE2')[0] 
'/' 

In 3,5:

>>> unhexlify('2FE2')[0] 
47 

Ich habe versucht mit:

>>> str(unhexlify('2FE2'))[0] 
'b' 

oder:

>>> bytes.fromhex('2FE2')[0] 
47 
>>> decode_hex('2FE2')[0][0] 
47 

Ich kann einfach nicht das bekommen korrekte Ascii. Ich Beule in die Darstellung Python verwendet: b‘... oder immer einen int

Dank

Antwort

2

unhexlify immer gibt ein bytes Objekt und Indizierung in ein bytes Objekt erzeugt eine ganze Zahl in Python 3 (a bytes Objekt hält eine Folge von ganzen Zahlen im Bereich 0-255).

Wenn Sie ein anderes bytes Objekt, verwenden Slicing stattdessen bekommen wollte:

unhexlify('2FE')[:1] 

Dies funktioniert sowohl in Python 2 und 3.

+0

Von dem, was ich sehe, fügt Python 3 in das Objekt der „Typ "auf Index 0, daher identifiziert" b "ein Byte-Array. Ist mein Verständnis richtig? Wenn ja, warum, ergibt für mich keinen Sinn. Slicing entfernt nur das "b"? Ich bin verwirrt –

+0

@TheSingularity_: Sie werden mit Zeichenfolge Literal Notationen verwirrt. Sie können ein 'bytes'-Objekt mit der' b '...' 'Literalnotation erstellen, sodass' bytes ([102, 111, 111]) 'und' b'foo''den gleichen Wert ergeben. Wenn Sie 'repr()' oder 'str()' für ein solches Objekt verwenden (oder es im interaktiven Interpreter von Python wiedergeben oder 'print()' auf einem verwenden, der 'repr()' und 'str()' verwendet), dann erzeugt Python wieder die 'b' .... '' Syntax für Sie, damit Sie diesen Wert einfach reproduzieren können. Kopieren Sie einfach die Ausgabe, fügen Sie sie in Python-Code ein, und Sie haben wieder das Gleiche. –

+0

@TheSingularity_: all das ist * Syntax * jedoch. Slicing funktioniert mit dem * Wert *, nicht mit der Syntax. Das 'b' und die Anführungszeichen sind nicht Teil des Wertes. Also wird bytesobject [: 1] 'ein neues' bytes'-Objekt mit den Bytes erzeugen, die durch die Scheibe angegeben sind. Für 'b'foo'', das' b'f', das erste Byte zurückgibt. –

Verwandte Themen