Converter Hex em ASCII em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Converter Hex em ASCII em Python usando o método decode()
  2. Converter Hex em ASCII em Python usando o método codecs.decode()
Converter Hex em ASCII em Python

Este tutorial examinará vários métodos para converter uma string hexadecimal em uma string ASCII em Python. Suponha que temos uma string escrita na forma hexadecimal 68656c6c6f e queremos convertê-la em uma string de caracteres ASCII que será hello, pois h é igual a 68 no código ASCII, e é 64, l é 6c e o é 6f.

Podemos converter uma string hexadecimal em uma string ASCII em Python usando os seguintes métodos:

Converter Hex em ASCII em Python usando o método decode()

O método string.decode(encoding, error) no Python 2 pega uma string codificada como entrada e a decodifica usando o esquema de codificação especificado no argumento encoding. O parâmetro error especifica os esquemas de tratamento de erros a serem usados ​​no caso de um erro que pode ser strict, ignore e replace.

Portanto, para converter uma string hex em uma string ASCII, precisamos definir o parâmetro encoding do método string.decode() como hex. O código de exemplo a seguir demonstra como usar o método string.decode() para converter um hexadecimal em ASCII no Python 2.

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

Resultado:

hello

No Python 3, o método bytearray.decode(encoding, error) pega um array de bytes como entrada e o decodifica usando o esquema de codificação especificado no argumento encoding.

Para decodificar uma string em Python 3, primeiro precisamos converter a string em um array de bytes e então usar o método bytearray.decode() para decodificá-la. O método bytearray.fromhex(string) pode ser usado para converter a string em un array de bytes primeiro.

O código de exemplo a seguir demonstra como usar os métodos bytearray.decode() e bytearray.fromhex(string) para converter uma string hexadecimal em string ASCII no Python 3:

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

Resultado:

hello

Converter Hex em ASCII em Python usando o método codecs.decode()

O método codecs.decode(obj, encoding, error) é semelhante ao método decode(). Ele pega um objeto como entrada e o decodifica usando o esquema de codificação especificado no argumento encoding. O argumento error especifica o esquema de tratamento de erros a ser usado em caso de erro.

No Python 2, o codecs.decode() retorna uma string como saída, e no Python 3, ele retorna un array de bytes. O código de exemplo a seguir demonstra como converter uma string hexadecimal em ASCII usando o método codecs.decode() e converter a matriz de bytes retornada em string usando o método str().

import codecs

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

Resultado:

hello

Artigo relacionado - Python ASCII

Artigo relacionado - Python Hex