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.

Dejar un comentario

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