如何从 InputStream 读取 TLV 数据?

问题描述

Java 程序将收到类似“0x040x060x112233445566”的信息,考虑指定的 TLV 指示:

  • 0x04 是标签表示值的类型(例如温度传感器、速度等)

  • 0x06 是以字节为单位的值的长度(本例中为 6 个字节)

  • 0x112233445566 是值(例如温度、速度、电池等)

这样的数据会继续进入我的套接字的输入流(每 x 毫秒),如何读取这样的 TLV 数据?我尝试使用 BufferedReader 的 readLine() 将其作为字符串读取,但是然后处理该数据(分隔(需要分隔符)每个十六进制值并将其转换为十进制值(用于验证目的))有点混乱,有没有更好的从输入流中读取这种 TLV 数据的方法

注意:

  • 0X前缀不会出现在实际数据中,我这里只是用它来区分十六进制字段

  • 实际数据将包含多个 TLV 元素。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)