我需要读取传感器板的串口,并使用此example来读取数据。 但我惊讶于控制台终端上的输出数据看起来像这样
Wÿðÿ8Ã?íÈÓÿ
因为我使用此System.out.print(new String(buffer,0,len));
这种方法只是在每次接收数据包时打印数据。
但是当我将此方法用于hexa数字时,输出将在接收任何数据之前写入零!
这种方法
byte[] arr = { 0x00, 0x01 };
ByteBuffer wrapped = ByteBuffer.wrap(arr); // big-endian by default
short num = wrapped.getShort();
String f=String.valueOf(num);
System.out.print(f);
那么如何处理这个问题,将传入的字节转换成六进制的可读数据!!!
答案 0 :(得分:3)
请改为尝试:
final byte[] arr = new byte[] { 0x00, 0x01 }; // or whatever your byte array is
final String asHexStr = DatatypeConverter.printHexBinary(arr)
System.out.println(asHexStr);
答案 1 :(得分:1)
您应充分利用现有界面。考虑使用printf
。
byte[] arr = { 0x00, 0x01 };
ByteBuffer wrapped = ByteBuffer.wrap(arr); // big-endian by default
boolean read = true;
while(read)
try { System.out.printf("%x",wrapped.get()); } //get each byte, print as hex
catch(BufferUnderflowException ex) { read = false; } //stop at empty buffer
}