it-swarm.com.de

Konvertieren von ASCII Zeichenfolge in Hexadezimalzeichen für ASCII?

Wie kann ich in Python von Hex in Plain ASCII konvertieren?

Beachten Sie, dass ich zum Beispiel "0x7061756c" in "paul" konvertieren möchte.

114
Paul Reiners

Eine etwas einfachere Lösung:

>>> "7061756c".decode("hex")
'paul'
200
cjm

Sie müssen keine Bibliothek importieren:

>>> bytearray.fromhex("7061756c").decode()
'paul'
66
user4369081
>>> txt = '7061756c'
>>> ''.join([chr(int(''.join(c), 16)) for c in Zip(txt[0::2],txt[1::2])])
'paul'                                                                          

ich habe nur Spaß, aber die wichtigen Teile sind:

>>> int('0a',16)         # parse hex
10
>>> ''.join(['a', 'b'])  # join characters
'ab'
>>> 'abcd'[0::2]         # alternates
'ac'
>>> Zip('abc', '123')    # pair up
[('a', '1'), ('b', '2'), ('c', '3')]        
>>> chr(32)              # ascii to character
' '

werde jetzt auf binascii schauen ...

>>> print binascii.unhexlify('7061756c')
paul

cool (und ich habe keine Ahnung, warum andere Leute dich durch Reifen springen lassen, bevor sie helfen).

41
andrew cooke

Hier ist meine Lösung, wenn Sie mit hexadezimalen Ganzzahlen und nicht mit Hex-Strings arbeiten:

def convert_hex_to_ascii(h):
    chars_in_reverse = []
    while h != 0x0:
        chars_in_reverse.append(chr(h & 0xFF))
        h = h >> 8

    chars_in_reverse.reverse()
    return ''.join(chars_in_reverse)

print convert_hex_to_ascii(0x7061756c)
4
carloserivera

In Python 2:

>>> "7061756c".decode("hex")
'paul'

In Python 3:

>>> bytes.fromhex('7061756c').decode('utf-8')
'paul'
2
Julien

Getestet in Python 3.3.2 .__ Es gibt viele Möglichkeiten, dies zu erreichen, hier ist eine der kürzesten, die nur von Python bereitgestelltes Material verwendet:

import base64
hex_data ='57696C6C20796F7520636F6E76657274207468697320484558205468696E6720696E746F20415343494920666F72206D653F2E202E202E202E506C656565656173652E2E2E212121'
ascii_string = str(base64.b16decode(hex_data))[2:-1]
print (ascii_string)

Wenn Sie nichts importieren möchten, können Sie natürlich Ihren eigenen Code schreiben. Etwas sehr grundlegendes wie dieses:

ascii_string = ''
x = 0
y = 2
l = len(hex_data)
while y <= l:
    ascii_string += chr(int(hex_data[x:y], 16))
    x += 2
    y += 2
print (ascii_string)
2

Alternativ können Sie dies auch tun ... 

Python-Interpreter

print "\x70 \x61 \x75 \x6c"

Beispiel

[email protected]:~# python
Python 2.7.14+ (default, Mar 13 2018, 15:23:44) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "\x70 \x61 \x75 \x6c"
p a u l
>>> exit()
[email protected]:~# 

oder 

Python One-Liner

python -c 'print "\x70 \x61 \x75 \x6c"'

Beispiel

[email protected]:~# python -c 'print "\x70 \x61 \x75 \x6c"'
p a u l
[email protected]:~# 
0
Sabrina