Octal a decimal en Java - Algoritmo

Convertir octal a decimal en Java

Hoy vamos a abordar la conversión de bases numéricas en Java. Específicamente vamos a ver el algoritmo para convertir octal (base 8) a decimal (base 10).

El algoritmo que vamos a usar será manual, es decir, lo vamos a programar nosotros.

Función que convierte octal a decimal

He separado el algoritmo dentro de una función para que sea claro de entender. Recibimos una cadena y la recorremos de derecha a izquierda.

Dentro del recorrido, en cada paso convertimos el char actual a entero, elevamos 8 (porque es octal) al número de potencia que irá aumentando por cada dígito y lo multiplicamos por el número actual.

Al resultado anterior lo vamos sumando en un número que será el valor decimal.

public static long octalADecimal(String octal) {
    long decimal = 0;
    int potencia = 0;
    for (int x = octal.length() - 1; x >= 0; x--) {
        int valorActual = Character.getNumericValue(octal.charAt(x));
        long elevado = (long) Math.pow(8, potencia) * valorActual;
        decimal += elevado;
        potencia++;
    }
    return decimal;
}

En pocas palabras recorremos de derecha a izquierda y elevamos el 8 a la potencia dependiendo del número de dígito, cuyo resultado multiplicamos por el entero actual.

Octal a decimal en Java

Es momento de probar el ejercicio. Podemos usar un Scanner para solicitar la cadena octal al usuario y después imprimir el resultado:


/*

    Programado por Luis Cabrera Benito 
  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
    
    Blog:       https://parzibyte.me/blog
    Ayuda:      https://parzibyte.me/blog/contrataciones-ayuda/
    Contacto:   https://parzibyte.me/blog/contacto/
*/
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Escribe el octal:");
        String octal = sc.nextLine();
        long decimal = octalADecimal(octal);
        System.out.printf("El octal %s es %d en decimal", octal, decimal);
    }

    public static long octalADecimal(String octal) {
        long decimal = 0;
        int potencia = 0;
        for (int x = octal.length() - 1; x >= 0; x--) {
            int valorActual = Character.getNumericValue(octal.charAt(x));
            long elevado = (long) Math.pow(8, potencia) * valorActual;
            decimal += elevado;
            potencia++;
        }
        return decimal;
    }
}

En mi caso lo he probado con el número 123 que en octal es 83. Puedes comprobarlo con este conversor de bases open source.

Octal a decimal en Java - Algoritmo
Octal a decimal en Java – Algoritmo

Si te gusta Java te invito a leer más tutoriales del lenguaje.

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 *