Bei einer Hex-Zeichenfolge handelt es sich um eine reguläre Zeichenfolge, mit der Ausnahme, dass alle zwei Zeichen ein Byte darstellen, das einem ASCII-Zeichen zugeordnet ist.

So zum Beispiel die Zeichenfolge

abc

Würde als dargestellt werden

979899

Ich schaue auf das binascii -Modul, weiß aber nicht wirklich, wie ich das Hex- nehmen soll. string und verwandle es wieder in den ascii string. Welche Methode kann ich verwenden?

Hinweis: Ich beginne mit 979899 und möchte es wieder in abc konvertieren

0
MxLDevs 7 Okt. 2012 im 23:13

3 Antworten

Beste Antwort

Um die Zeichenfolge von der Hexadezimalzahl zurückzugewinnen, können Sie verwenden

s=str(616263)
print "".join([chr(int(s[x:x+2], 16)) for x in range(0,len(s),2)])

Siehe http://ideone.com/dupgs

0
halex 7 Okt. 2012 im 19:32

Sie können ord() verwenden, um den ganzzahligen Wert jedes Zeichens abzurufen:

>>> map(ord, 'abc')
[97, 98, 99]
>>> ''.join(map(lambda c: str(ord(c)), 'asd'))
'979899'
>>> ''.join((str(ord(c)) for c in 'abc'))
'979899'
3
Blender 7 Okt. 2012 im 19:35

Sie benötigen keine binascii, um die ganzzahlige Darstellung eines Zeichens in einer Zeichenfolge zu erhalten. Sie benötigen lediglich die integrierte Funktion ord().

s = 'abc'
print(''.join(map(lambda x:str(ord(x)),s)))  # outputs "979899"
2
Blender 7 Okt. 2012 im 19:18