java

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

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

17 horas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.