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

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!

    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 scope 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

    Use parseLong:

     Long.parseLong(s, 16) 
     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 .

    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; } }