Converti Hex in ASCII in Python

Muhammad Waiz Khan 30 gennaio 2023
  1. Converti Hex in ASCII in Python usando il metodo decode()
  2. Converti Hex in ASCII in Python usando il metodo codecs.decode()
Converti Hex in ASCII in Python

Questo tutorial esaminerà vari metodi per convertire una stringa esadecimale in una stringa ASCII in Python. Supponiamo di avere una stringa scritta in forma esadecimale 68656c6c6f e di volerla convertire in una stringa di caratteri ASCII che sarà hello poiché h è uguale a 68 in codice ASCII, e è 64, l è 6c e o è 6f.

Possiamo convertire una stringa esadecimale in una stringa ASCII in Python utilizzando i seguenti metodi:

Converti Hex in ASCII in Python usando il metodo decode()

Il metodo string.decode(encoding, error) in Python 2 prende una stringa codificata come input e la decodifica usando lo schema di codifica specificato nell’argomento encoding. Il parametro error specifica gli schemi di gestione degli errori da usare in caso di un errore che può essere strict, ignore e replace.

Pertanto, per convertire una stringa esadecimale in una stringa ASCII, dobbiamo impostare il parametro encoding del metodo string.decode() come hex. Il codice di esempio sotto mostra come utilizzare il metodo string.decode() per convertire un esadecimale in ASCII in Python 2.

string = "68656c6c6f"
string.decode("hex")

Produzione:

hello

In Python 3, il metodo bytearray.decode(encoding, error) accetta un array di byte come input e lo decodifica usando lo schema di codifica specificato nell’argomento encoding.

Per decodificare una stringa in Python 3, dobbiamo prima convertire la stringa in un array di byte e poi utilizzare il metodo bytearray.decode() per decodificarla. Il metodo bytearray.fromhex(string) può essere usato per convertire prima la stringa in un array di byte.

Il codice di esempio seguente mostra come utilizzare il metodo bytearray.decode() e bytearray.fromhex(string) per convertire una stringa esadecimale in una stringa ASCII in Python 3:

string = "68656c6c6f"
byte_array = bytearray.fromhex(string)
byte_array.decode()

Produzione:

hello

Converti Hex in ASCII in Python usando il metodo codecs.decode()

Il metodo codecs.decode(obj, encoding, error) è simile al metodo decode(). Prende un oggetto come input e lo decodifica utilizzando lo schema di codifica specificato nell’argomento encoding. L’argomento error specifica lo schema di gestione degli errori da utilizzare in caso di errore.

In Python 2, codecs.decode() restituisce una stringa come output, e in Python 3, restituisce un array di byte. Il codice di esempio sotto mostra come convertire una stringa esadecimale in ASCII usando il metodo codecs.decode() e convertire l’array di byte restituito in stringa usando il metodo str().

import codecs

string = "68656c6c6f"
binary_str = codecs.decode(string, "hex")
print(str(binary_str, "utf-8"))

Produzione:

hello

Articolo correlato - Python ASCII

Articolo correlato - Python Hex