簡(jiǎn)介
為了高效傳輸,物聯(lián)網(wǎng)項(xiàng)目通常采用了二進(jìn)制協(xié)議來(lái)進(jìn)行數(shù)據(jù)交換城豁。
RkConverter庫(kù)的目標(biāo)是讓開(kāi)發(fā)從低效、重復(fù)、無(wú)技術(shù)含量的二進(jìn)制報(bào)文解析中解放出來(lái)專注于業(yè)務(wù)和協(xié)議變化宛乃。
用法
字節(jié)數(shù)組轉(zhuǎn)對(duì)象
藍(lán)牙設(shè)備返回了設(shè)備信息字節(jié)數(shù)組為{82,75,52,49,48,48,0,68}
數(shù)據(jù)交換解析協(xié)議為
![](http://7xs7jt.com1.z0.glb.clouddn.com/rkconvert1.png)
只需要兩步即可將字節(jié)數(shù)轉(zhuǎn)換為需要的對(duì)象
1、為DeviceInfo對(duì)象屬性添加RkField注解描述解析規(guī)則
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蒸辆、調(diào)用RkFieldConverter#bytes2entity方法使用字節(jié)數(shù)組設(shè)置DeviceInfo對(duì)象屬性
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());
對(duì)象轉(zhuǎn)字節(jié)數(shù)組
調(diào)用RkFieldConverter#entity2bytes方法將對(duì)象轉(zhuǎn)換成字節(jié)數(shù)組方便將數(shù)據(jù)寫(xiě)入藍(lán)牙設(shè)備征炼。
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);