2008-12-12 11 views
0

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

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

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

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

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

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

+0

Специальные символы в этом вопросе нарушают RSS-канал для меня :-( – Athena 2008-12-12 09:43:17

ответ

3

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

str.getChar(0); 

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

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

Integer.parseInt(str,16); 
0

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

Итак:

  1. Проверьте содержимое строки.
  2. Проверьте содержимое подстроки.
1

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

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