我必须得到一些通过设备USB接收的数据。 我可以连接到串口(使用javacomm库)并每两分钟接收一次发送设备的数据。这些数据将它们存储在byte []中并将其显示给InputStream,如下所示:
try { int count = inputStream.available(); byte[] bs = new byte[count]; System.out.print(inputStream.read(bs));//also with (bs,0,count)..
} catch (IOException e) { }
但这显示总是0(零)。我尝试过其他方法,例如直接打印de byte [],输出是“[B @ e35bb7”我不知道这是什么......
try { System.out.println(bs); } catch (IOException e) { }
我尝试将其转换为String:
try { String me=bs.toString(); String txtohex=String.format("%04x", new BigInteger(1, me.getBytes("UTF-8"))); System.out.println(txtohex);//returns 5b424031633765326461
} catch (IOException e) { }
或:
try {
StringBuilder sb = new StringBuilder();
for (byte b : bs){
sb.append(String.format("%02X ", b));
}
System.out.println(sb.toString());//returns C4 3C 00 A0 00 00 00 00 00
} catch (IOException e) { }
但这是错误的,因为我正在转换字符串[B @ e35bb7。从设备我必须得到一个非常长的二进制或十六进制字符串,这我不是。我还能做些什么来准确接收设备发送给我的内容?
答案 0 :(得分:0)
使用new String(btye[])
代替toString()
从字节数组中获取字符串。