Estoy tratando de convertir una cadena que tiene 8 caracteres de longitud de código hexadecimal en un entero para que pueda hacer comparaciones int en lugar de comparaciones de cadenas en una gran cantidad de valores diferentes.Convertir cadena hexadecimal a int
Sé que esto es bastante trivial en C++, pero tengo que hacerlo en Java. El caso de prueba que necesito satisfacer es esencialmente Convertir "AA0F245C" a int y luego volver a esa cadena para que sepa que está convirtiendo a la derecha.
he intentado lo siguiente:
int decode = Integer.decode("0xAA0F245C"); // NumberFormatException
int decode2 = Integer.decode("AA0F245C"); //NumberFormatException
int parseInt = Integer.parseInt("AA0F245C", 16); //NumberFormatException
int valueOf = Integer.valueOf("AA0F245C", 16); //NumberFormatException
También he intentado hacer que dos personajes a la vez y multiplicando los resultados, que las obras de conversión, pero el número no es correcto.
int id = 0;
for (int h = 0; h < hex.length(); h= h+2)
{
String sub = hex.subSequence(h, h+2).toString();
if (id == 0)
id = Integer.valueOf(sub, 16);
else
id *= Integer.valueOf(sub, 16);
}
//ID = 8445600 which = 80DEA0 if I convert it back.
No puedo usar bibliotecas de terceros solo para que lo sepa, así que esto tiene que hacerse en las bibliotecas estándar de Java.
Gracias por su ayuda con anticipación.
está multiplicando cuando debería estar cambiando. –
'0xAA0F245C = 2853119068' pero' Integer.MAX_VALUE = 0x7fffffff = 2147483647' – Pshemo
Sé que la pregunta ha existido durante dos años. Sin embargo, java 8 habilita otra solución. Agregaron el método 'Integer.parseUnsignedInt (" value ", radix)' que sirve para su propósito. Si el valor es mayor que 'Integer.MAX_VALUE', se asigna a un número negativo. – John