Cadena a hexadecimal en Python

Cadena a hexadecimal en Python

Hexadecimal tiene una base de 16, y podemos representar una cadena en formato hexadecimal usando el prefijo 0x.

Podemos convertir la cadena a hexadecimal utilizando los siguientes métodos:

  1. Usando el método Hex (N)
  2. Usando el método Code ()
  3. Usando el método literal_eval ()

Método 1: Uso del hex ()

Podemos convertir la cadena a hexadecimal usando el método hex (). El método hex () acepta el parámetro en forma entera, y para eso primero, tenemos que convertir la cadena a un entero y luego pasar ese valor al método hex () como se muestra a continuación:

Ejemplo: string_to_hex.py

# string_to_hex.py
str = "245fc"
# pasar el STR al int () para convertirlo en base16 int
base16int = int (str, 16)
# Imprima la cadena convertida a la base16 Hexadecimal Int Value
imprimir ("valor", base16int)
Imprimir ("Valor", Tipo (Base16Int))
hex_value = hex (base16int)
imprimir (hex_value)
# Chcking el tipo de valor
imprimir (tipo (hex_value))

Producción:

valor
0x245fc

Línea 3: Creamos una cadena para la demostración.

Línea 6: Pasamos esa cadena al método int () con la base 16. Ahora, este método int () convertirá la cadena en el valor entero hexadecimal.

Línea 9: Imprimimos el valor que obtenemos después de convertir la cadena en entero hexadecimal.

Línea 10: También imprimemos el tipo de valor para confirmar que la cadena ahora está en forma de un entero.

Línea 12: Sabemos que el método Hex (N) incorporado acepta el valor entero, convirtiendo el entero en la cadena hexadecimal. Es por eso que necesitamos convertir la cadena en un entero para pasarla al método hex (). Pasamos ese valor base16int al método hex () y obtuvimos el hex_value, cadena hexadecimal.

Línea 13: Imprimimos ese valor hexadecimal convertido.

Línea 16: Imprimimos el tipo de valor hexadecimal convertido, que muestra en la salida que es un tipo de cadena.

Entonces, ahora convertimos la cadena en un valor hexadecimal.

Método 2: Convierta la cadena a hexadecimal usando el encode ()

También podemos convertir la cadena normal a una cadena hexadecimal que no tiene ningún carácter hexadecimal. Para eso, tenemos que convertir la cadena a byte usando el método coden (), y luego podemos convertir la cadena a hexadecimal como se muestra a continuación:

# string_to_hex_utf8.py
# Convierta la cadena en los bytes
str = 'Linuxhint'.codificar ('UTF-8')
# Imprima la cadena convertida en bytes
Imprimir (STR)
# Convierta los bytes de cadena a la cadena hexadecimal
hex_str = str.maleficio()
# Imprima el tipo de valor hexadecimal convertido
imprimir (tipo (hex_str))

Producción:

Línea 4 a 7: Creamos una cadena que no tiene ningún carácter hexadecimal. Y luego convierta esas cadenas a bytes utilizando el método code (). Y luego, imprimimos esos bytes, que podemos ver en la línea de salida número 1.

Línea 10 a 13: Llamamos al método hex () usando el operador DOT, y ahora los bytes se convierten en el valor de cadena hexadecimal que requerimos. Para confirmar el tipo de cadena de resultados, simplemente imprimimos la línea número 13 y la salida muestra que está en una cadena de tipo hexadecimal.

Método 3. Usando AST.método literal_eval ()

También podemos convertir la cadena a un entero utilizando el método de biblioteca AST literal_eval. Este método también convierte la cadena en un entero para usar el método hex () para convertir la cadena en cadena hexadecimal. Pero este método solo acepta 0x caracteres de prefijo.

# string_to_hex_utf8.py
de AST import literal_eval
str = "0xaaa"
# Convierta la cadena en el entero
convert_str = literal_eval (str)
# Imprima el valor y el tipo de Convert_STR
print (convert_str)
imprimir ("Tipo", Tipo (Convert_STR))
# Pase el convert_str al método hex ()
hex_value = hex (convert_str)
imprimir (hex_value)
# Chcking el tipo de valor
imprimir (tipo (hex_value))

Producción:

2730
tipo
0xaaa

Línea 2 a 10: Importamos el método literal_eval () desde la biblioteca AST. Luego creamos una cadena con el prefijo 0x. Luego pasamos esa cadena al método literal_eval () y la convertimos en el número entero. Para confirmar que la salida está en forma entera, la imprimimos en la línea número 9. También imprimemos el tipo de salida, que muestra que es un entero.

Línea 13 a 17: Conocemos el método hexadecimal incorporado que acepta el valor entero, convirtiendo el entero en la cadena hexadecimal. Es por eso que necesitamos convertir la cadena en un entero para pasarla al método hex (). Pasamos ese valor convert_str (entero) al método hex () y obtuvimos el hex_value, cadena hexadecimal. Imprimimos ese valor hexadecimal convertido. También imprimimos el tipo de valor hexadecimal convertido, que muestra que es un tipo de cadena hexadecimal.

Excepción de error (typeError):

A veces obtendremos errores al convertir la cadena en una cadena hexadecimal. La razón detrás de eso es el método hex () solo acepta el valor entero como parámetro.

string_hex = "0xff"
hex_output = hex (string_hex)
imprimir (hex_output)

Producción:

1
TypeError: el objeto 'str' no se puede interpretar como un entero

Conclusión:

Entonces, hemos visto diferentes métodos para convertir la cadena en una cadena minúscula hexadecimal. El método hex () es muy popular debido a su uso fácil. Pero a veces, queremos convertir la cadena sin usar el prefijo 0x, por lo que en ese caso, podemos usar el método bytes coden (), como ya hemos visto en el artículo.

El código de este artículo está disponible en el siguiente enlace GitHub:

https: // github.com/shekharpandey89/string-to-hex-conversion