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