Преобразование шестнадцатеричной строки в int в Java - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь преобразовать шестнадцатеричную строку в тип int, но независимо от того, что я пытаюсь, я получаю java.lang.NumberFormatException: для входной строки: "0xE0030000".Я использую следующий код в моем коде:

    String ecuPattern ="(\\s*)(ECU_ADDRESS )(0xE0\\d*\\w*\\d*)";

    if(mt.find()){
        String stringNumber = mt.group(3);
        long number = Long.parseLong(stringNumber, 16);

Подскажите, пожалуйста, что мне не хватает?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы также можете использовать decode() и оставить «0x», если хотите.

String hex="0xE0030000";  
long decimal=Long.decode(hex);

Из Javadoc:

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

 DecodableString:
    Signopt DecimalNumeral 
    Signopt 0x HexDigits 
    Signopt 0X HexDigits 
    Signopt # HexDigits 
    Signopt 0 OctalDigits
0 голосов
/ 01 марта 2019

Ваш код кажется неполным, но, исходя из вашего сообщения об исключении, вход для Long.parseLong должен быть "E0030000", а НЕ "0xE0030000".

public static void main(String[] args){
    String hex="E0030000";  
    Long decimal=Long.parseLong(hex,16);  
    System.out.println(decimal);
}

вывод: 3758292992

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...