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 与运算都不会发生改变

posted @ 2021-11-22 20:18  兔宝快递  阅读(685)  评论(0编辑  收藏  举报