Как преобразовать шестнадцатеричную строку в long в java?

Я хочу преобразовать шестнадцатеричную строку в java.

Я пробовал с общим преобразованием.

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

Но я получаю сообщение об ошибке:

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

Есть ли способ конвертировать String в java? Или я пытаюсь, что на самом деле невозможно!

Благодаря!

    Long.decode(str) принимает различные форматы:

    Принимает десятичные, шестнадцатеричные и восьмеричные числа, заданные следующей грамматикой:
    DecodableString:

    • Значок opt DecimalNumeral
    • Sign opt 0x HexDigits
    • Знак opt 0X HexDigits
    • Sign opt # HexDigits
    • Sign opt 0 OctalDigits

    Знак:

    Но в вашем случае это не поможет, ваша строка не входит в frameworks того, что может длиться долго. Вам нужен BigInteger :

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

    Вывод:

    +23846102773961507302322850521

    Для сравнения здесь Long.MAX_VALUE :

    9223372036854775807

    Использовать parseLong:

     Long.parseLong(s, 16) 
     new BigInteger(string, 16).longValue() 

    Для любого значения someLong:

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

    Другими словами, это вернет long вы отправили в Long.toHexString() для любого long значения, включая отрицательные числа. Он также будет принимать строки, которые больше, чем long и молча возвращают нижние 64 бита строки как long . Вы можете просто проверить длину строки <= 16 (после прорисовки пробелов), если вам нужно убедиться, что вход подходит long .

    Long.parseLong(s, 16) будет работать только до "7fffffffffffffff" . Вместо этого используйте BigInteger :

     public static boolean isHex(String hex) { try { new BigInteger(hex, 16); return true; } catch (NumberFormatException e) { return false; } } 
    Давайте будем гением компьютера.