python

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Resetear GOOJPRT PT-210 MTP-II (Impresora térmica)

El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…

2 semanas hace

Proxy Android para impresora térmica ESC POS

Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…

2 semanas hace

Android – Servidor web con servicio en segundo plano

En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…

2 semanas hace

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

1 mes hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

2 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

2 meses hace