2011-10-17 110 views
2

我连接到解答一些参数,我把它蓝牙设备,但作为回应,我从这样的插座阅读:转换字节字符串转换成ASCII

String data = dIn.readLine(); 

其中DIN是:

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

事情是我收到的数据,但它是一个字节数组读取字符串。如何将包含我的字节数组的字符串转换为具有正确十六进制值的字符串?

预先感谢您。

+0

你能不能给你接收数据的一个例子,你如何看待它*应该*看起来? – 2011-10-17 12:14:05

回答

7

无论你想实际上解码,您已经有了一个字节数组,或者你是否想任意的二进制数据的文本表示(十六进制)的文本字符串目前还不清楚。对于第一个,你会使用:

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

对于您可以使用类似Apache Commons Codec第二:

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

或多或少,这是我需要的......但不完全。 – Sonhja 2011-10-17 16:54:44

0

看看String的Format function。如果将format指定为“%X”,则将以十六进制字符串形式返回

您必须遍历字节数组才能转换每个数组,因为上述函数只接受基本数字类型。

+0

%X为大写字母字符或%x为小写字母字符。 – Nicolas 2011-10-17 12:12:39

0

DataInputStream包装在InputStreamReader中。

DataInputStream.readLine()已弃用。