2011-10-17 3 views
2

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

String data = dIn.readLine(); 

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

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

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

Благодарим вас заблаговременно.

+0

Можете ли вы дать пример данных вы получаете, и как вы думаете, это * должен выглядеть? –

ответ

7

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

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

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

String text = Hex.encodeHexString(data); 
+0

Более или менее это то, что мне нужно ... Но не совсем. – Sonhja

+2

@Sonhja: Задайте более конкретный вопрос, получите более конкретный ответ :) –

0

Посмотрите на String's Format function. Если вы укажете format как «% X», он будет возвращен в виде шестнадцатеричной строки.

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

+0

% X для альфа-букв верхнего регистра или% x для строчных букв альфа. – Nicolas

Смежные вопросы