para numero hexadecimal convertir como cast cambiar algoritmo java parsing hex long-integer

numero - ¿Cómo convertir una cadena hexadecimal a long en java?



hexadecimal en netbeans (4)

Quiero convertir una cadena hexadecimal a larga en java.

Lo he intentado con la conversión general.

String s = "4d0d08ada45f9dde1e99cad9"; long l = Long.valueOf(s).longValue(); System.out.println(l); String ls = Long.toString(l);

Pero recibo este mensaje de error:

java.lang.NumberFormatException: For input string: "4d0d08ada45f9dde1e99cad9"

¿Hay alguna forma de convertir String a long en java? ¿O estoy intentando lo que no es realmente posible?

¡Gracias!


Use parseLong:

Long.parseLong(s, 16)


Long.decode(str) acepta una variedad de formatos:

Acepta los números decimales, hexadecimales y octales proporcionados por la siguiente gramática:
DecodableString:

  • Registrarse opt DecimalNumeral
  • Registrarse opt 0x HexDigits
  • Registrarse opt 0X HexDigits
  • Registrarse opt # HexDigits
  • Registrarse opt 0 OctalDigits

Firmar:

  • -

Pero en su caso eso no ayudará, su Cadena está más allá del alcance de lo que puede contener. Necesitas un BigInteger :

String s = "4d0d08ada45f9dde1e99cad9"; BigInteger bi = new BigInteger(s, 16); System.out.println(bi);

Salida:

23846102773961507302322850521

Para la comparación, aquí está Long.MAX_VALUE :

9223372036854775807


Long.parseLong(s, 16) solo funcionará hasta "7fffffffffffffff" . Use BigInteger lugar:

public static boolean isHex(String hex) { try { new BigInteger(hex, 16); return true; } catch (NumberFormatException e) { return false; } }


new BigInteger(string, 16).longValue()

Para cualquier valor de someLong:

new BigInteger(Long.toHexString(someLong), 16).longValue() == someLong

En otras palabras, esto devolverá la long que envió a Long.toHexString() para cualquier valor long , incluidos los números negativos. También aceptará cadenas que sean más long que long y silenciosamente devolverá los 64 bits más bajos de la cadena como long . Puede verificar la longitud de la cadena <= 16 (después de recortar el espacio en blanco) si necesita asegurarse de que la entrada se ajusta a una long .