python

Python: convertir octal a decimal

Siguiendo con los tutoriales de conversiones numéricas en Python, hoy toca el turno de convertir un número octal a uno decimal.

Dicho con otras palabras vamos a usar Python para hacer la conversión numérica de base 8 a base 10.

Lo haremos con funciones propias, es decir, será nuestro código y no una función que ya incluya el lenguaje.

Explicación del algoritmo

Al igual que cuando convertimos de binario a decimal, básicamente es recorrer la cadena octal y elevar el número de la base (8 en este caso) a la posición en la que vayamos.

Es decir, al recorrer la cadena y estar en el primer carácter vamos a elevar a la posición 0; en el segundo carácter vamos a elevar a la 1, y así hasta terminar.

Este resultado lo vamos a multiplicar por el carácter actual como entero y finalmente lo que resulte se lo agregamos al valor decimal que vamos a regresar al terminar de recorrer la cadena octal.

Por cierto, en este caso necesitamos recorrer la cadena de derecha a izquierda, así que para hacerlo fácil simplemente invertimos la cadena antes de recorrerla. Para que entiendas mejor la ejecución, te dejo un ejemplo de lo que el programa hace:

Convirtiendo el octal 5373...
El número decimal es 0
Elevamos el 8 a la potencia 0 (el resultado es 1) y multiplicamos por el carácter actual: 3
Sumamos 3 a decimal. Ahora es 3
El número decimal es 3
Elevamos el 8 a la potencia 1 (el resultado es 8) y multiplicamos por el carácter actual: 7
Sumamos 56 a decimal. Ahora es 59
El número decimal es 59
Elevamos el 8 a la potencia 2 (el resultado es 64) y multiplicamos por el carácter actual: 3
Sumamos 192 a decimal. Ahora es 251
El número decimal es 251
Elevamos el 8 a la potencia 3 (el resultado es 512) y multiplicamos por el carácter actual: 5
Sumamos 2560 a decimal. Ahora es 2811
El octal 5373 es 2811

Para este caso he convertido el número octal 5373 a decimal. Ahora que he explicado el funcionamiento del algoritmo, veamos el código fuente.

Código fuente Python – Conversión octal a decimal

Veamos el código fuente. En este caso lo importante es la función, ya que puedes invocarla desde cualquier lugar enviándole los argumentos desde cualquier parte.

Por ejemplo, yo he solicitado al usuario que ingrese el número octal usando el teclado, pero puedes usarla de la manera que quieras.

"""
    https://parzibyte.me/blog
"""


def octal_a_decimal(octal):
    print(f"Convirtiendo el octal {octal}...")
    decimal = 0
    posicion = 0
    # Invertir octal, porque debemos recorrerlo de derecha a izquierda
    # pero for in empieza de izquierda a derecha
    octal = octal[::-1]
    for digito in octal:
        print(f"El número decimal es {decimal}")
        valor_entero = int(digito)
        numero_elevado = int(8 ** posicion)
        equivalencia = int(numero_elevado * valor_entero)
        print(
            f"Elevamos el 8 a la potencia {posicion} (el resultado es {numero_elevado}) y multiplicamos por el carácter actual: {valor_entero}")
        decimal += equivalencia
        print(f"Sumamos {equivalencia} a decimal. Ahora es {decimal}")
        posicion += 1
    return decimal


octal = input("Ingresa un número octal: ")
decimal = octal_a_decimal(octal)
print(f"El octal {octal} es {decimal} en decimal")

Al ejecutarlo, el resultado es correcto. Lo he comprobado con mi conversor de bases numéricas:

Python – Convertir octal a decimal – Ejemplo de código

Por cierto, como una característica adicional al programa se debería revisar que todos los caracteres sean menores que 8, pues recuerda que el octal solo contempla desde el 0 hasta el 7.

Te dejo con más tutoriales sobre Python en el blog de Parzibyte.

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

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.