Na versão 2 do python podemos converter uma string para hexadecimal facilmente com a opção encode com a seguinte sintaxe :
x = "Convertendo para Hexadecimal".encode("hex") print(x) >>> 436f6e76657274656e646f20706172612048657861646563696d616c
Podendo facilmente inverter o processo com a opção decode:
y = x.decode("hex") print(y) >>> 'Convertendo para Hexadecimal'
Infelizmente esses métodos não funcionam em python 3, mas felizmente podemos utilizar o módulo binascii para realizar a conversão.
Com o módulo binascii, podemos utilizar a função hexlify para codificar a frase em hexadecimal e a função unhexlify para decodificar.
A sintaxe é simples veja
Codificando para hexadecimal
frase = "Python Rocks!!" binascii.hexlify(bytes(frase, "utf-8")) b'507974686f6e20526f636b732121'
Decodificando para ASCII
frase = "507974686f6e20526f636b732121" binascii.unhexlify(bytes(frase, "utf-8")) b'Python Rocks!!'
Perceba que temos que converter a string para bytes, especificar a codificação que no caso foi passado utf-8, o resultado final é a frase codificada ou decodificada em bytes, sendo necessário converter para string caso deseje.
Criei duas funções para codificar e decodificar já convertendo para string e removendo os excessos.
import binascii def encode(text): """Convert a string to Hex""" encoded = binascii.hexlify(bytes(text, "utf-8")) encoded = str(encoded).strip("b") encoded = encoded.strip("'") return encoded
def decode(text): """Convert Hex to ASCII""" decoded = binascii.unhexlify(bytes(text, "utf-8")) decoded = str(decoded).strip("b") decoded = decoded.strip("'") return decoded
É isso ai um post rápido de final de ano =)!