HOWTO · Python
Convertir Byte a Hex en Python
Introduce cómo convertir un byte a un hexadecimal en Python
En esta página
Este tutorial introducirá cómo convertir los bytes en hexadecimal en Python.
El tipo de datos de los bytes en Python es una secuencia de bytes que puede ser almacenada en el disco como una variable, que luego puede ser codificada y decodificada. Se declaran como una cadena pero con el prefijo del carácter b. Los bytes aceptan caracteres especiales Unicode prefijados con \x.
Iniciar un Byte Literal en Python
Daremos un ejemplo de un literal de byte, declararemos una cadena con caracteres especiales, y usaremos la función encode('utf-8') para convertirla en un literal de byte.
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print(byte_var)
Resultado:
b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
La salida de encode() resultará en un literal de byte prefijado con el carácter b y los caracteres especiales convertidos en símbolos Unicode.
Ahora que la declaración de un byte está cubierta, procedamos a convertir un byte en hexadecimal.
Use el método hex() para convertir un byte en hexadecimal en Python
El hex() método introducido desde Python 3.5 lo convierte en una cadena hexadecimal.
En este caso, el argumento será de un tipo de datos de byte que se convertirá en hexadecimal.
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print("Byte variable: ", byte_var)
print("Hexadecimal: ", byte_var.hex())
Resultado:
Byte variable: b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal: ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274
Usar el módulo binascii para convertir un byte a hexadecimal en Python
El módulo Python binascii contiene eficientes funciones de utilidad para operaciones binarias y ASCII.
Dentro de este módulo, hay una función hexlify() que devuelve un valor hexadecimal del argumento dado, que es un valor binario.
En este ejemplo, el argumento será la variable de byte que se convertirá en hexadecimal.
import binascii
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print("Byte variable: ", byte_var)
print("Hexadecimal: ", binascii.hexlify(byte_var))
Resultado:
Byte variable: b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal: b'ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274'
Tenga en cuenta que el valor de retorno de hexlify() devuelve un byte literal, a diferencia de hex(), que devuelve una cadena convertida.
Si quiere convertir el resultado en una cadena, use la función decode('utf-8').
import binascii
byte_var = "γιαούρτι - yogurt".encode("utf-8")
print("Byte variable: ", byte_var)
print("Hexadecimal: ", "" + binascii.hexlify(byte_var).decode("utf-8"))
Resultado:
Byte variable: b'\xce\xb3\xce\xb9\xce\xb1\xce\xbf\xcf\x8d\xcf\x81\xcf\x84\xce\xb9 - yogurt'
Hexadecimal: ceb3ceb9ceb1cebfcf8dcf81cf84ceb9202d20796f67757274
Ahora el resultado hexadecimal se convierte en una cadena de un byte literal.
En resumen, hemos cubierto 2 métodos para convertir un byte a hexadecimal en Python. La forma más simple es usar la función incorporada hex() a un literal de byte. Alternativamente, la función hexlify() del módulo binascii también puede ser usada para producir la misma salida.