java - 如何将从串口接收到的字节转换为十六进制?

标签 java serialization serial-port hex arrays

我需要为我的传感器板读取串行端口,我使用这个 example读取数据到来。 但令我惊讶的是控制台终端上的输出数据是这样的

Wÿðÿ8Ã?íÈÓÿ

因为我使用这个 System.out.print(new String(buffer,0,len)); 这种方法只是在每次接收数据包时打印数据。

但是当我将这种方法用于六位数字时,输出将在接收任何数据之前写入零!!

这个方法

    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);

那么如何处理这个问题,将传入的字节转换为六进制的可读数据!!!

最佳答案

试试这个:

final byte[] arr = new byte[] { 0x00, 0x01 }; // or whatever your byte array is
final String asHexStr = DatatypeConverter.printHexBinary(arr)
System.out.println(asHexStr);

关于java - 如何将从串口接收到的字节转换为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004153/

相关文章:

java - 是否可以强制 Map 以一种方式排序,但以另一种方式获取值?

python - 如何使用全局变量的值来确定在单独线程中运行的函数的控制流?

C# 连接字符串以进行串行发送

java - 断开连接时 Rxtxcomm 错误

java - 为什么我的哈希集包含重复项?

java - 运行太多测试时失去与 mongoDB 的连接

java - 配置 SWIG 以使用 int32_t 输出参数为 C 函数创建适当的 Java 数据类型

c# - 在使用 Json.NET 序列化期间向所有类添加自定义类型名称

java - 使用无参数构造函数问题序列化和反序列化对象

perl - 在 Perl 中,如何保存包含子例程引用的散列?