NumberFormatException - со строкой шестнадцатеричного значения - PullRequest
0 голосов
/ 15 ноября 2018

Я получил поток байтов, этот поток является байтовым массивом (поток байтов []), теперь я хочу сначала проанализировать этот байт до шестнадцатеричного значения, например, 80 = "0x50", затем преобразуйте это в int

Но для некоторых значений, таких как 0xB8, я получил `java.lang.NumberFormatException: для входной строки:" 0xB8 "

Как я могу справиться с этим исключением? Может быть, с другим типом анализа или другого типа данных?

byte k = stream[i];

        int b = 0;
        try {
            b = Integer.parseInt(String.format("0x%02X",k),16);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Попробуйте это:

Integer.parseInt(String.format("0b%02X",k),16);

Двоичные значения записываются с использованием синтаксиса "0bxx"

0 голосов
/ 16 ноября 2018

Я решил мою проблему с этим вопросом

byte k = stream[i];

        int b = 0;
        try {
            String hexStringNumber = String.format("0x%02X",k);
            b = Integer.decode(hexStringNumber);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
0 голосов
/ 15 ноября 2018

Вы должны использовать перегруженный parseInt метод с radix. Для шестнадцатеричного значения пример:

Integer.parseInt("0x84B",16);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...