我正在连接蓝牙设备,它会回复我发送的一些参数,但作为响应,我从这样的套接字中读取:
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);
答案 1 :(得分:0)
看看String的Format function。如果您将format指定为“%X”,则会将其作为十六进制字符串
返回您必须遍历字节数组才能转换每个字节数组,因为上面的函数只接受原始数字类型。
答案 2 :(得分:0)
将DataInputStream
换成InputStreamReader。
DataInputStream.readLine()
已被弃用。