Necesito cambiar un valor entero en un valor hexadecimal de 2 dígitos en Java. ¿Hay alguna forma de hacerlo? Gracias
Mi mayor número será 63 y el menor será 0. Quiero un cero a la izquierda para valores pequeños.
Necesito cambiar un valor entero en un valor hexadecimal de 2 dígitos en Java. ¿Hay alguna forma de hacerlo? Gracias
Mi mayor número será 63 y el menor será 0. Quiero un cero a la izquierda para valores pequeños.
Respuestas:
String.format("%02X", value);
Si usa en X
lugar de x
lo sugerido por aristar , entonces no necesita usar .toUpperCase()
.
Integer.toHexString(42);
Javadoc: http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toHexString(int)
Sin embargo, tenga en cuenta que esto puede proporcionarle más de 2 dígitos. (Un entero tiene 4 bytes, por lo que potencialmente podría recuperar 8 caracteres).
Aquí hay un truco para obtener su relleno, siempre que esté absolutamente seguro de que solo está tratando con valores de un solo byte (255 o menos):
Integer.toHexString(0x100 | 42).substring(1)
Muchas más (y mejores) soluciones en el relleno izquierdo de enteros (formato no decimal) con ceros en Java .
String.format("%02X", (0xFF & value));
Utilice Integer.toHexString()
. No olvide rellenar con un cero a la izquierda si solo termina con un dígito. Si su número entero es mayor que 255 obtendrá más de 2 dígitos.
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(myInt));
if (sb.length() < 2) {
sb.insert(0, '0'); // pad with leading zero if needed
}
String hex = sb.toString();
StringBuilder
realmente una mejora? pastebin.com/KyS06JMz
uso esto para obtener una cadena que representa el valor hexadecimal equivalente de un número entero separado por espacio para cada byte EX: valor hexadecimal de 260 en 4 bytes = 00 00 01 04
public static String getHexValString(Integer val, int bytePercision){
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(val));
while(sb.length() < bytePercision*2){
sb.insert(0,'0');// pad with leading zero
}
int l = sb.length(); // total string length before spaces
int r = l/2; //num of rquired iterations
for (int i=1; i < r; i++){
int x = l-(2*i); //space postion
sb.insert(x, ' ');
}
return sb.toString().toUpperCase();
}
public static void main(String []args){
System.out.println("hex val of 260 in 4 bytes = " + getHexValString(260,4));
}
Según GabrielOshiro, si desea un formato entero de longitud 8, intente esto
String.format("0x%08X", 20) //print 0x00000014