Конвертировать строку байтов в ASCII - PullRequest
2 голосов
/ 17 октября 2011

Я подключаюсь к устройству Bluetooth, которое отвечает на некоторые параметры, которые я отправляю, но в ответ я читаю из сокета вот так:

String data = dIn.readLine();

Где dIn является:

DataInputStream dIn = new DataInputStream(socket.getInputStream());

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

Заранее спасибо.

Ответы [ 3 ]

7 голосов
/ 17 октября 2011

Неясно, пытаетесь ли вы на самом деле декодировать текстовую строку, которую вы получили в виде байтового массива, или вам нужно текстовое представление (в шестнадцатеричном виде) произвольных двоичных данных. Для первого вы бы использовали:

String text = new String(data, 0, data.length, "ASCII");

Для второго вы можете использовать что-то вроде Кодек Apache Commons :

String text = Hex.encodeHexString(data);
0 голосов
/ 17 октября 2011

Обернуть DataInputStream в InputStreamReader .

DataInputStream.readLine() устарело.

0 голосов
/ 17 октября 2011

Посмотрите на строковую функцию форматирования . Если вы укажете формат как "% X", он будет возвращен в виде шестнадцатеричной строки

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

...