问题补充说明:比如我有一个16进制只字符串 7E 00 05 60 31 32 33 要在末尾添加两个CRC16校验码 校验这7个16进制字符 请写出算法和答案
7E000560313233计算CRC16结果应该是:5B3E
方法如下:
CRC-16码由两个字节构成,在蒸船宽村八开始时CRC寄存器的每答灯妒远贵一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算相同为0,不同为1;来自0^0=0;0^1=1;1^0=1扩慢进首差如饭振;1^1=0),之后对CRC寄存器从高到低进行移位,在灶搜没最高位(MSB)的位置补零,而最低位(LSB,移位后已360问答经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异型持留供证广其别胶否已或。重复上述的隐纳由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的漏缓值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。
1.设置CRC寄存器,并给策始围面反察爱括积其赋值FFFF(he显绝x)。
2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。
4.如果LSB为0,重复第八身宽逐乱刚沉秋校气香三步;若LSB为1,CRC寄存器与多项式码相异或。
5.重复第3与第4感法但呢步直到8次移位全部指帝儿胜官销责内刚绝完成。此时一个8-bit数据处房式罪建原丰理完毕。
6.重复第2至第5步直到所有数据全绝此雷热日意探士冲换部处理完成。
7.最终CRC寄存器的内容即为CRC值。
CRC(养松天准开头16位)多项式为X16+X15+X2+1,其对应校验二进制位列为11000抗话洲心量胡00000000010措超诉分1。