Converter Hex em Byte em Python

  1. Inicializar um valor hexadecimal
  2. Utilize bytes.fromhex() para converter Hex em Byte em Python
  3. Utilize o módulo unhexlify para converter um hexágono em byte em Python

Este tutorial irá introduzir como converter valores hexadecimais num byte literal em Python.

Os valores hexadecimais ou hexadecimais são uma representação de um número composto por 16 símbolos em vez dos habituais 10 símbolos em valores decimais. Os números de 0 até 9 e os caracteres a até e compõem os 16 símbolos hexadecimais.

Por exemplo, a conversão hexadecimal para o número 1000 é 3E8.

Inicializar um valor hexadecimal

Vamos criar um valor hexadecimal utilizando uma string e converter a frase A quick brown fox num valor hexadecimal utilizando a função hexlify() que é uma função no módulo binascii.

Além disso, para converter uma string em hexadecimal, seria necessário converter a string em byte para poder convertê-la em hexadecimal.

import binascii
str_val = 'A quick brown fox'.encode('utf-8')
hex_val = binascii.hexlify(str_val).decode('utf-8')

print(hex_val)

Resultado:

4120717569636b2062726f776e20666f78

Agora que convertemos com sucesso uma string em hexadecimal, vamos proceder à conversão de um hexadecimal em um byte.

Utilize bytes.fromhex() para converter Hex em Byte em Python

A função bytes.fromhex() aceita um único argumento de valor hexadecimal e converte-o num byte literal.

Tomando o valor hexadecimal do resultado anterior, utilizar fromhex() para o converter num byte literal.

hex_val = '4120717569636b2062726f776e20666f78'

print(bytes.fromhex(hex_val))

Resultado:

Byte value:  b'A quick brown fox'

O resultado produzirá o bytes literal, que é a frase convertida num prefixo hexadecimal com a letra b para especificar que o valor é um byte literal.

Utilize o módulo unhexlify para converter um hexágono em byte em Python

O módulo binascii Python contém funções utilitárias eficientes para operações binárias e ASCII. O unhexlify() é uma função dentro do módulo binascii que converte um valor hexadecimal em um byte literal.

Vamos inicializar um novo exemplo com caracteres especiais não-ASCII, que será depois convertido num valor hexadecimal. O exemplo será a tradução grega da frase a quick brown fox.

import binascii
from binascii import unhexlify

str_val = 'Μια γρήγορη καφέ αλεπού'.encode('utf-8') #A quick brown fox in Greek translation
hex_val = binascii.hexlify(str_val).decode('utf-8')

print('String value: ', str_val.decode('utf-8'))
print('Hexadecimal: ', hex_val)
print('Byte value: ', unhexlify(hex_val))

Resultado:

String value:  Μια γρήγορη καφέ αλεπού
Hexadecimal:  ce9cceb9ceb120ceb3cf81ceaeceb3cebfcf81ceb720cebaceb1cf86cead20ceb1cebbceb5cf80cebfcf8d
Byte value:  b'\xce\x9c\xce\xb9\xce\xb1 \xce\xb3\xcf\x81\xce\xae\xce\xb3\xce\xbf\xcf\x81\xce\xb7 \xce\xba\xce\xb1\xcf\x86\xce\xad \xce\xb1\xce\xbb\xce\xb5\xcf\x80\xce\xbf\xcf\x8d'

Agora convertemos com sucesso valores hexadecimais em bytes.

Neste artigo, abordámos a utilização de fromhex() e binascii.unhexlify() para converter valores hexadecimais em bytes literais em Python. fromhex() é preferível se não quiser acrescentar importações no seu código fonte. Caso contrário, ambas as funções fornecerão o mesmo resultado.

Artigo relacionado - Python Bytes

  • Converter Byte em Hex em Python
  • Como Converter strings em Bytes em Python
  • Artigo relacionado - Python Hex

  • Converter Int para Binário em Python