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

Estoy interesado en trabajar contigo de manera remota para llevar tu idea a la realidad, formar parte de tu equipo de desarrolladores, ayudarte con tu tarea, dar asesorías y todo lo relacionado con tecnología y programación. Contáctame para más información
No te vayas sin seguirme en Twitter, Facebook y GitHub
Si tienes dudas déjalas en un comentario, pero asegúrate de seguirme antes como agradecimiento (no te cuesta nada y me ayudas mucho)


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: