Octal a decimal en C

Para terminar la serie de ejercicios sobre conversiones de números entre distintas bases veremos cómo convertir un número octal a decimal usando el lenguaje de programación C.

Es exactamente el mismo algoritmo que usamos para convertir hexadecimal a decimal; únicamente cambia la base (de 16 a 8, porque octal es base 8) y la obtención de la equivalencia.

Octal a decimal en C

Octal a decimal en C

Lecturas recomendadas

Decimal a binario, octal y hexadecimal en C

Binario a decimal en C

Convertir hexadecimal a decimal en C

Algoritmo para convertir octal a decimal en C

Como lo dije, es igual que convertir hexadecimal a decimal. Ahora en lugar de elevar el 16 a la potencia según la posición, vamos a elevar el número 8.

Por otro lado, ya no necesitamos hacer una conversión tan larga; pues en octal se usan los dígitos del 0 al 7, no hay letras y por lo tanto podemos aplicar el truco de convertir un char a su representación entera.

Recorremos la cadena de derecha a izquierda y por cada carácter multiplicamos su valor por el resultado de elevar 8 a una potencia. Primero la potencia es 0, luego es 1 y así sucesivamente conforme nuestra cadena sea más larga.

Función que convierte octal a decimal en C

Aquí está el código de la función. Recibe como argumentos la cadena que representa al número octal y la longitud de la misma; devuelve un unsigned long long representando el número decimal.

No vemos el 8 en ningún lado porque tenemos definida arriba la base con #define BASE 8. Para la equivalencia simplemente restamos ‘0’ al valor; dándonos su representación entera.

Por cierto, recuerda que aquí puedes ver cómo elevar un número a una potencia en C.

Uso de la función y ejemplo de conversión

Para implementarla podemos hacer esto:

Recuerda que leemos con fgets para mayor seguridad. Para sacar la longitud de la cadena usamos strlen y lo demás ya está explicado.

Probar ejemplo en vivo

Como ya es costumbre, dejo aquí un enlace que te permite ejecutar el código de ejemplo en C para convertir un octal a decimal.

Si no estás seguro, pruébalo en el conversor octal a decimal online.