Java: convertir decimal a hexadecimal

En este post veremos cómo convertir un número decimal a su representación hexadecimal en Java. Es decir, convertir de base 10 a base 16.

En un post anterior vimos cómo convertir hexadecimal a decimal en Java, ahora haremos lo contrario y veremos dos maneras de hacerlo: con un algoritmo propio y con una función que ya viene integrada.

2 maneras de convertir decimal a hexadecimal en Java

El método que ya viene incorporado se invoca con Integer.toHexString, devuelve una cadena que contiene el número hexadecimal. Se usa así:

String hexadecimal = Integer.toHexString(númeroDecimal);

En los ejemplos lo veremos de forma más clara.

El segundo método es escrito por mí, lo que se hace es ir dividiendo el número decimal entre 16 y obtener además el residuo. Dependiendo del residuo se agrega el carácter, es decir, si el residuo es 0 se agrega 0, si el residuo es 10 se agrega una A, etcétera.

Convertir decimal a hexadecimal en Java

Veamos el método manual del que estaba hablando. Recibe un número entero y devuelve uno en base 16. Lo que se hace es un ciclo que se romperá cuando el decimal sea 0 o menor a 0, eso se logrará en algún momento ya que se divide entre 16.

public static String decimalAHexadecimal(int decimal) {
    String hexadecimal = "";
    String caracteresHexadecimales = "0123456789abcdef";
    while (decimal > 0) {
        int residuo = decimal % 16;
        hexadecimal = caracteresHexadecimales.charAt(residuo) + hexadecimal; // Agregar a la izquierda
        decimal /= 16;
    }
    return hexadecimal;
}

El residuo es un índice perfecto para obtener el carácter de la cadena que tiene todos los símbolos hexadecimales. Como ves, el símbolo se agrega al inicio de la cadena hexadecimal, y no al final.

Poniendo todo junto

Aquí dejo la demostración y el ejemplo de uso de las funciones.

/*

  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
    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 decimales[] = { 16777215, 12, 21 };
        for (int decimal : decimales) {
            String hexadecimal = Integer.toHexString(decimal);
            System.out.printf("Usando Integer.toHexString el decimal %d es %s\n", decimal, hexadecimal);
            hexadecimal = decimalAHexadecimal(decimal);
            System.out.printf("Usando decimalAHexadecimal el decimal %d es %s\n", decimal, hexadecimal);
        }
    }

    public static String decimalAHexadecimal(int decimal) {
        String hexadecimal = "";
        String caracteresHexadecimales = "0123456789abcdef";
        while (decimal > 0) {
            int residuo = decimal % 16;
            hexadecimal = caracteresHexadecimales.charAt(residuo) + hexadecimal; // Agregar a la izquierda
            decimal /= 16;
        }
        return hexadecimal;
    }
}

Al ejecutarlo ya sea por consola o con NetBeans el resultado es:

Java – decimal a hexadecimal – Conversión

Ambos métodos tienen el mismo resultado, por lo que la función escrita “manualmente” es correcta. De igual modo puedes comprobarlo en este conversor de números online.

Te invito a leer más sobre Java en mi blog.

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 *