Java – Convertir decimal a octal

Hoy veremos dos maneras de convertir un número decimal a uno octal en Java.

El primer método es algo ya programado e integrado dentro de la API de Java, y el segundo es un método manual que nos permitirá portar el algoritmo a otros lenguajes si así lo queremos.

Es decir, veremos dos maneras, la forma integrada y la forma manual programada por nosotros.

Nota: anteriormente ya hice la conversión octal a decimal en Java.

Decimal a octal en Java con Integer.toOctalString

Existe un método estático de la clase Integer, el mismo se llama toOctalString, recibe un número entero y devuelve una cadena con su representación octal. Para llamarlo usamos los siguiente:

String octal = Integer.toOctalString(numeroDecimal);

Lo veremos de manera más clara en los ejemplos de abajo.

Conversión decimal a octal con lógica propia

Podemos realizar este algoritmo manualmente. Simplemente tenemos que obtener el residuo de dividir el número decimal entre 8; el residuo lo agregamos a la izquierda del número octal y después vamos dividiendo el decimal entre 8.

public static String decimalAOctal(int decimal) {
    String octal = "";// Almacenamos el número octal que será el resultado
    String caracteresOctales = "01234567";
    while (decimal > 0) {
        int residuo = decimal % 8;
        // El residuo es lo que se suma, y podemos usarlo como índice
        // Recordemos que el carácter se pone "a la izquierda", por eso
        // concatenamos el carácter y luego lo que ya lleva sumado el octal
        octal = (caracteresOctales.charAt(residuo) + octal);
        // Lo vamos dividiendo entre 8 para que en algún momento llegue a 0
        decimal /= 8;
    }
    return octal;
}

Al final el decimal será 0, y el ciclo se romperá para finalmente devolver el número octal.

Poniendo todo junto con ejemplos

Ahora veamos ambos métodos en ejecución; todo el código queda así:

/*

  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
    Blog:       https://parzibyte.me/blog
    Ayuda:      https://parzibyte.me/blog/contrataciones-ayuda/
    Contacto:   https://parzibyte.me/blog/contacto/
    
    Copyright (c) 2020 Luis Cabrera Benito
    Licenciado bajo la licencia MIT
    
    El texto de arriba debe ser incluido en cualquier redistribucion
*/
public class Main {
    public static void main(String[] args) {
        int decimal = 2811;
        String octal = Integer.toOctalString(decimal);
        System.out.printf("El decimal %d es %s en octal usando Integer.toOctalString\n", decimal, octal);
        octal = decimalAOctal(decimal);
        System.out.printf("El decimal %d es %s en octal usando metodo manual\n", decimal, octal);
    }

    public static String decimalAOctal(int decimal) {
        String octal = "";// Almacenamos el número octal que será el resultado
        String caracteresOctales = "01234567";
        while (decimal > 0) {
            int residuo = decimal % 8;
            // El residuo es lo que se suma, y podemos usarlo como índice
            // Recordemos que el carácter se pone "a la izquierda", por eso
            // concatenamos el carácter y luego lo que ya lleva sumado el octal
            octal = (caracteresOctales.charAt(residuo) + octal);
            // Lo vamos dividiendo entre 8 para que en algún momento llegue a 0
            decimal /= 8;
        }
        return octal;
    }
}

Si lo ejecuto, el resultado es:

Decimal a octal en Java

Los resultados son correctos. Puedes comprobarlos en este conversor decimal a octal online.

Si quieres, también puedes ver más ejercicios sobre Java en mi blog. Recuerda que en otro post hice la conversión octal a decimal en Java.

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 *