java解析协议数据
协议数据帧格式:
测试数据帧(数据包含:B5指令和数据00)
服务端根据收到的帧,计算帧数据域的长度,以便解析出这个数据帧传输的数据内容:
点击查看代码
// DATA域的长度,4个字节
int[] dataDomains = new int[4];
// 参数依次为:原数组,原数组第几位开始复制,目标数组,目标数组第几位开始写入,原数组复制长度
System.arraycopy(decArray, 4, dataDomains, 0, 4);
int len = arr2int(dataDomains);
......
// 数据域长度数组转化为长度int
public static int arr2int(int[] b) {
int s = 0;
s = ((((b[0] & 0xff) << 8 | (b[1] & 0xff)) << 8) | (b[2] & 0xff)) << 8 | (b[3] & 0xff);
return s;
}
每个数都 & 0xff 是因为格式化数据(格式化为8位),任何数和0xff 与运算都不会发生改变