La casualidad empuje:
Tengo el número hexadecimal disponible en cadena y quiero acortarlo mediante la eliminación de ceros a la izquierda. Necesito hacerlo en Java
Por ejemplo :
0000000000000000000000000A000000 -> 0x0A000000
0x0000000000000000000000000A000000 -> 0x0A000000
000000000000000000000000C0A80000 -> 0xC0A80000
0x000000000000000000000000C0A80000 -> 0xC0A80000
Actualmente por debajo de código produce una excepción NumberFormatException
System.out.println(Long.toHexString(Long.parseLong("0x0000000000000000000000000A000000")));
Eran :
No está utilizando Long.parseLong
correctamente.
Debería ser:
System.out.println(Long.toHexString(Long.parseLong("0000000000000000000000000A000000",16)));
sino que dará lugar a
a000000
Lo cual no es exactamente lo que quería.
Vas a tener que añadir un nuevo formato para obtener la salida exacta que quería:
String shortHex = Long.toHexString(Long.parseLong("0000000000000000000000000A000000",16)).toUpperCase ();
String formatted = (shortHex.length () % 2 == 0 ? "0x":"0x0") + shortHex;
System.out.println (formatted);
Ahora, la salida será:
0x0A000000
Si la entrada se inicia con "0x", que tendrá que recortar ese prefijo antes de llamar parseLong
.