Python: convertir decimal a hexadecimal

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.

Algoritmo para pasar de decimal a hexadecimal

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.

Código de la función

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.

Poniendo todo junto

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:

Convertir decimal a hexadecimal en Python

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *