En este artículo de programación en Python te voy a enseñar cómo convertir un número decimal en base 10 a un número hexadecimal en base 16. Es el último post sobre Python y conversión de números que he venido haciendo.
En resumen te mostraré el código fuente de cómo pasar de decimal a hexadecimal en Python usando código propio, y no funciones que ya vienen dentro del lenguaje.
Lo que debemos hacer son divisiones mientras el número decimal sea mayor que cero. Primero obtenemos el residuo de dividir al decimal entre 16.
Una vez que tenemos el residuo (que será un valor entre 0 y 15) obtenemos su verdadero valor, pues recuerda que en hexadecimal existen las letras desde la A hasta la F, así que si el número es mayor a 9 se debe convertir a letra.
Luego, ese dígito hexadecimal es agregado al inicio de la cadena que guardará el número hexadecimal completo. Y finalmente asignamos a decimal el valor de dividirlo a sí mismo entre 16 (de este modo el ciclo se romperá en algún momento).
Por cierto, es importante convertir la división de decimal entre 16 a entero, ya que necesitamos solo valores enteros porque el residuo ya lo calculamos anteriormente.
Necesitamos dos funciones. Una de ellas es para obtener el verdadero valor hexadecimal, y la otra es la que realmente convierte el número decimal a hexadecimal en Python. Como sea, el código fuente de ambas se ve así:
"""
https://parzibyte.me/blog
"""
# Función que regresa el verdadero valor hexadecimal.
# Por ejemplo, si recibe un 15 devuelve f, y si recibe un número menor a 10, devuelve el número sin modificarlo
def obtener_caracter_hexadecimal(valor):
# Lo necesitamos como cadena
valor = str(valor)
equivalencias = {
"10": "a",
"11": "b",
"12": "c",
"13": "d",
"14": "e",
"15": "f",
}
if valor in equivalencias:
return equivalencias[valor]
else:
return valor
def decimal_a_hexadecimal(decimal):
hexadecimal = ""
while decimal > 0:
residuo = decimal % 16
verdadero_caracter = obtener_caracter_hexadecimal(residuo)
hexadecimal = verdadero_caracter + hexadecimal
decimal = int(decimal / 16)
return hexadecimal
La función de la línea 8 devuelve el verdadero carácter hexadecimal como lo expliqué anteriormente. En cambio, la de la línea 25 convierte de decimal a hexadecimal. El ciclo lo puedes ver en la línea 27.
El cálculo del residuo está en la línea 28, y la división para hacer menor a decimal está en la línea 31. En algún momento se detendrá el ciclo y se va a devolver la cadena hexadecimal.
El modo de uso de las funciones anteriormente expuestas queda a tu criterio, sin embargo te voy a mostrar un ejemplo simple de uso.
En este caso vamos a solicitar al usuario que ingrese un número decimal y lo vamos a convertir a hexadecimal usando esta función. El código completo queda así:
"""
https://parzibyte.me/blog
"""
# Función que regresa el verdadero valor hexadecimal.
# Por ejemplo, si recibe un 15 devuelve f, y si recibe un número menor a 10, devuelve el número sin modificarlo
def obtener_caracter_hexadecimal(valor):
# Lo necesitamos como cadena
valor = str(valor)
equivalencias = {
"10": "a",
"11": "b",
"12": "c",
"13": "d",
"14": "e",
"15": "f",
}
if valor in equivalencias:
return equivalencias[valor]
else:
return valor
def decimal_a_hexadecimal(decimal):
hexadecimal = ""
while decimal > 0:
residuo = decimal % 16
verdadero_caracter = obtener_caracter_hexadecimal(residuo)
hexadecimal = verdadero_caracter + hexadecimal
decimal = int(decimal / 16)
return hexadecimal
decimal = int(
input("Escribe un número decimal, yo lo convertiré a hexadecimal: "))
hexadecimal = decimal_a_hexadecimal(decimal)
print(f"El decimal {decimal} es {hexadecimal} en hexadecimal")
Al ejecutarlo puedo observar que los resultados son correctos:
Recuerda que anteriormente hice un conversor de números en JavaScript en donde puedes probar todos estos resultados.
También te invito a que leas más sobre Python en mi blog.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.