java吧 关注:1,298,593贴子:12,835,309
  • 1回复贴,共1

求大佬的帮助

只看楼主收藏回复

CRC编码过程
从二维码中提取前两个英文字母、最后两个英文字母(X、x除外,取英文字母ASCII值为原始数据),并从中提取出多项式g(x)(多项式的最高位为x16,最低为1);
预置一个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器;
把第一个8位二进制数据(即原始数据的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器,高八位数据不变;
CRC寄存器向右移一位,MSB(最高位)补零,并检查右移后的移出位LSB(最低位)。
如果LSB为0,重复第四步;若LSB为1,CRC寄存器与多项式相异或。
重复第四与第五部知道八次移位全部完成。此时一个8-bit数据处理完毕
重复第三至第五步直到将剩下三个原始数据全部处理完成
最终CRC寄存器的内容为CRC值。
取CRC的高八位作为红外控制码的第一字节,按顺序取原始数据为红外控制码的二、三、四、五字节,取CRC值的低八位为红外控制码的第六字节。
算法示例
从二维码中提取的字符串数据为:<Aa12x16,Fg.5tx15/x2+\1/hbBb>,则提取的四个英文字符为AaBb,多项式g(x)=x16+x15+x2+1提取原始数据为0x41、0x61 、0x42 、0x62,多项式码为0xA001(由多项式忽略了最高位的“1”,得到生成项是0x8005,其中0xA001为0x8005按位颠倒之后的结果)计算得到的CRC码值为0x8FF4;所得6字节红外控制码为:0x8f 0x41 0x61 0x42 0x62 0xf4


IP属地:浙江1楼2019-02-26 13:47回复
    不存在的


    IP属地:浙江2楼2019-02-26 14:03
    回复