преобразовать шестнадцатеричную символьную строку в целое число в Java [дубликат]

Я начинающий в Java Я читаю данные из последовательного порта, и я сохранил данные в строковом массиве данных длиной 24 байта.

Данные, которые я получаю в качестве вывода: 12120814330006050.0

Данные также содержат шестнадцатеричный символ в строке. Я хочу прочитать первый символ строки. Я сделал:

String str=dispArray[i].substring(1,2);
int i= Integer.parseInt(str,16);
System.out.println("Decimal:="+ i);

Но я получаю NumberFormatException.plz помочь мне прочитать шестнадцатеричный символ.

Спасибо за ответ

12.12.2008 09:12:03
Специальные символы в этом вопросе нарушают RSS-канал для меня :-(
Athena 12.12.2008 09:43:17
Ты рогит или гопал? Эти данные были впервые исследованы в stackoverflow.com/questions/336289/vc-60-serial-communicaton , так что вы либо фальсифицируете идентификаторы пользователей, либо это идентичное оборудование. Повторюсь как одурачка.
paxdiablo 12.12.2008 10:35:00
3 ОТВЕТА

отдельные символы, которые вы можете получить из строки

str.getChar(0);

Когда вы знаете, что строка содержит шестнадцатеричные значения в каждом символе, вам не нужно преобразовывать каждый отдельный символ. Вы можете вставить полную строку и получить обратно значение dec шестнадцатеричной строки. В противном случае вы рассчитываете только 1 шестнадцатеричное значение и должны умножаться на порядковый номер позиции символа.

Чтобы разобрать его в шестнадцатеричное значение, вы можете позвонить

Integer.parseInt(str,16);
3
12.12.2008 09:19:09

Строки Java являются Unicode - поэтому байты уже были декодированы с использованием некоторой кодировки (вероятно, UTF-8?).

Так:

  1. Проверьте содержимое строки.
  2. Проверьте содержимое подстроки.
0
12.12.2008 09:19:29

Похоже, ваш поток данных содержит смесь двоичных и текстовых данных. Очень важно (IMO), чтобы вы не пытались хранить все это как строку. Сохраните его в виде двоичных данных и при необходимости преобразуйте соответствующие фрагменты в текст.

Это может означать, прежде всего, изменение способа чтения с последовательного порта - используйте API, которые работают с байтами и байтовыми массивами вместо символов и строк.

1
12.12.2008 09:47:57