简介

为了高效传输,物联网项目通常采用了二进制协议来进行数据交换。

RkConverter库的目标是让开发从低效、重复、无技术含量的二进制报文解析中解放出来专注于业务和协议变化。

用法

字节数组转对象

蓝牙设备返回了设备信息字节数组为{82,75,52,49,48,48,0,68}数据交换解析协议为

只需要两步即可将字节数转换为需要的对象

1、为DeviceInfo对象属性添加RkField注解描述解析规则

public class DeviceInfo {@RkField(position = 0,length = 6)private String model;@RkField(position = 6,length = 2)private int versionCode;public String getModel() {return model;}public void setModel(String model) {this.model = model;}public int getVersionCode() {return versionCode;}public void setVersionCode(int versionCode) {this.versionCode = versionCode;}
}
复制代码

2、调用RkFieldConverter#bytes2entity方法使用字节数组设置DeviceInfo对象属性

byte[] bytes = new byte[]{82,75,52,49,48,48,0,68};
DeviceInfo mDeviceInfo = new DeviceInfo();
mDeviceInfo = RkFieldConverter.bytes2entity(mDeviceInfo,bytes);
assertEquals("RK4100",mDeviceInfo.getModel());
assertEquals(68,mDeviceInfo.getVersionCode());
复制代码

对象转字节数组

调用RkFieldConverter#entity2bytes方法将对象转换成字节数组方便将数据写入蓝牙设备。

DeviceInfo mDeviceInfo = new DeviceInfo();
mDeviceInfo.setModel("RK4100");
mDeviceInfo.setVersionCode(68);
byte[] bytes = RkFieldConverter.entity2bytes(mDeviceInfo);
assertArrayEquals(new byte[]{82,75,52,49,48,48,0,68},bytes);
复制代码

GitHub 项目地址

RkConverter二进制报文解析工具相关推荐

  1. 制作IEC101/104报文解析工具

    文章目录 准备 一.IEC101/104协议 二.制作解析工具步骤 1.建立协议族 2.建立协议 3.建立术语 4.建立报文块 5.建立报文解析规则 总结 准备 这里是基于<在线解析二进制报文& ...

  2. modbus报文解析工具_Linux下网络流量常用那些监控工具

    这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof.ip.tcpdump.iptables等.本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇文章,本文只是简单地介绍并辅 ...

  3. tcp报文解析工具_15 张图,了解一下 TCP/IP 必知也必会的 10个要点

    作者丨Ruheng https://juejin.im/post/6844903490595061767 一.TCP/IP模型 TCP/IP协议模型(Transmission Control Prot ...

  4. ISO8583报文组装解析工具和定义器示例

    8583报文组装和解析工具类(Send8583Util),代码如下: import com.alibaba.fastjson.JSONObject; import org.apache.commons ...

  5. 【Rust】argh:基于 derive 宏且对二进制体积进行优化的命令行解析工具

    Derive-based argument parsing optimized for code size and conformance to the Fuchsia commandline too ...

  6. 在将varchar值id转换为int时失败_Python—CAN报文转换工具教程

    一.CAN报文简介 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 1 ...

  7. 8583 报文解析过程

    一. 全局概述 1. <多渠道平台接入接口规范>这个标准规定了各种接入端(主要包括直联多渠道平台的终端, 包括这里主要关注的POS机)与中国银联多渠道平台之间进行联机交易时使用的报文接口, ...

  8. 银联银行卡交换系统8583报文解析

    前言 最近在做8583报文这块解析,也遇到一些坑.下面将会介绍自己学习和了解8583报文这块的经验,希望可以帮到那些刚刚接触8583报文的同学们. 入门 首先我们需要知道的是我们的8583报文是基于P ...

  9. 8583报文解析1.0

    8583报文解析1.0 文章目录 8583报文解析1.0 一.规则 1.1:域规范简表 1.2:规范说明 1.2.1: 报文头 1.2.2: 操作类型 1.2.3: 位图:有效域明细 1.2.4:域规 ...

  10. JAVA实现报文解析:协议的数据类型和完整的报文结构解析

    **JAVA实现GBT32960报文解析系列文章链接:** JAVA实现GBT32960报文解析(一):协议的数据类型和完整的报文结构解析 JAVA实现GBT32960报文解析(二):数据包结构解析源 ...

最新文章

  1. react 禁止微信调整字体大小
  2. org.apache.struts2.dispatcher.FilterDispatcher的四个功能
  3. Ubuntu之bashrc:成功解决Ubuntu系统内出现的conda:未找到命令
  4. Hasor【付诸实践 02】SpringBoot 集成 Dataway 无代码接口工具配置及问题解决(含GreenPlum建表语句、demo源码、测试说明)
  5. storm UI解释
  6. 一道没人搞得定的趣味Shell编程游戏题!,看看你会不会?
  7. 12_python基础—函数基础(参数、返回值、调用)
  8. 编程人的「对象」长啥样?
  9. php ZeroMQ 的使用
  10. redis 异常解决办法
  11. 【visio】visio软件安装
  12. uniapp使用阿里百川SDK唤醒淘宝APP 打开淘宝领券页面/渠道备案,uniapp对接淘宝联盟等等超级详细
  13. 微信小程序毕业设计 基于微信共享小程序系统开题报告
  14. vue中使用leaflet加载地图影像并拾取坐标点
  15. 河海大学计算机信息学院2013年考研录取名单,河海大学地学院2013年考研录取名单...
  16. 玩转 Windows 10 中的 Linux 子系统
  17. 独立开发变现周刊(第66期): 如何把一个短链接生成工具变成一个可持续盈利的产品?...
  18. 正则表达式/\$\{id\}/gi详解
  19. Vue移动网页开发调试过程(第二篇)——weinre
  20. 竞赛通知|2021年全国大学生电子设计竞赛启动通知!

热门文章

  1. Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
  2. atitit. java跟php的比较..为什么大企业喜欢java 而不是php
  3. atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.
  4. 袁玉玮:简介人工智能在基金界的应用现状 (二)卖方交易员被冲击
  5. 语法比较:Julia,Matlab,Python
  6. OpenAnolis社区致Linux开发者的一封信
  7. 【短时平均过零率】基于matlab语音信号短时平均过零率【含Matlab源码 1721期】
  8. 【滤波器】基于matlab GUI分数延迟滤波器设计【含Matlab源码 1347期】
  9. 【运动学】基于matlab GUI模拟投篮系统(角度+力度可调)【含Matlab源码 1114期】
  10. 【优化算法】蝗虫优化算法(GOA)【含Matlab源码 936期】