Saltar al contenido

Convertidor de decimal a hexadecimal en Java

Si hallas algún problema con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al trabajo final.

Solución:

Una posible solución:

import java.lang.StringBuilder;

class Test 
  private static final int sizeOfIntInHalfBytes = 8;
  private static final int numberOfBitsInAHalfByte = 4;
  private static final int halfByte = 0x0F;
  private static final char[] hexDigits =  
    '0', '1', '2', '3', '4', '5', '6', '7', 
    '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
  ;

  public static String decToHex(int dec) 
    StringBuilder hexBuilder = new StringBuilder(sizeOfIntInHalfBytes);
    hexBuilder.setLength(sizeOfIntInHalfBytes);
    for (int i = sizeOfIntInHalfBytes - 1; i >= 0; --i)
    
      int j = dec & halfByte;
      hexBuilder.setCharAt(i, hexDigits[j]);
      dec >>= numberOfBitsInAHalfByte;
    
    return hexBuilder.toString(); 
  

  public static void main(String[] args) 
     int dec = 305445566;
     String hex = decToHex(dec);
     System.out.println(hex);       
  

Producción:

1234BABE

De todos modos, hay un método de biblioteca para esto:

String hex = Integer.toHexString(dec);

Simple:

  public static String decToHex(int dec)
  
        return Integer.toHexString(dec);
  

Como se menciona aquí: Java Convertir entero a entero hexadecimal

Necesito una función que tome una int dec y devuelva un String hexadecimal.

Encontré una solución más elegante en http://introcs.cs.princeton.edu/java/31datatype/Hex2Decimal.java.html. Cambié un poco del original (ver la edición)

// precondition:  d is a nonnegative integer
public static String decimal2hex(int d) 
    String digits = "0123456789ABCDEF";
    if (d <= 0) return "0";
    int base = 16;   // flexible to change in any base under 16
    String hex = "";
    while (d > 0) 
        int digit = d % base;              // rightmost digit
        hex = digits.charAt(digit) + hex;  // string concatenation
        d = d / base;
    
    return hex;

Descargo de responsabilidad: hago esta pregunta en mi entrevista de codificación. Espero que esta solución no se vuelva demasiado popular 🙂

Editar 17 de junio de 2016 : agregué el base variable para dar la flexibilidad de cambiar a cualquier base: binaria, octal, base de 7…

Según los comentarios, esta solución es la más elegante, así que eliminé la implementación de Integer.toHexString() .

Editar 4 de septiembre de 2015 : Encontré una solución más elegante http://introcs.cs.princeton.edu/java/31datatype/Hex2Decimal.java.html

Agradecemos que desees añadir valor a nuestra información contribuyendo tu experiencia en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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