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.