永发信息网

crc16校验代码中 多项式码明明是8005 为什么要用A001来异或,还有CRC16-REV=A001是什么意思

答案:3  悬赏:40  手机版
解决时间 2021-03-17 00:25
  • 提问者网友:杀手的诗
  • 2021-03-16 17:46
crc16校验代码中 多项式码明明是8005 为什么要用A001来异或,还有CRC16-REV=A001是什么意思
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-03-16 18:45
0x8005=1000 0000 0000 0101B
0xA001=1010 0000 0000 0001B
对比两个二进制高低位正好是完全相反的,CRC校验分为正向校验与反向校验。正向校验高位在左,反向校验低位在左,比如正向CRC校验的数据为0xAF5D=1010 1111 0101 1101B与0x8005异或时应该是0xAF5D^0x8005,而要使用0xA001与数据进行校验也应该使0xAF5D高低位换顺序为0xBAF5=1011 1010 1111 0101B。正向校验使用左移位,反向校验使用右移位,其实原理是一样的,得看校验的数据高低位顺序。
全部回答
  • 1楼网友:春色三分
  • 2021-03-16 21:54
请注意使用时高低位的区别,0x8005和0xA001实际上只是高低位互反,有些硬件的存储模式不一样,因为会根据情况调整使用的具体方法,算法并无本质区别,希望能帮到你。
  • 2楼网友:封刀令
  • 2021-03-16 20:20
一般电气、自动化仪表的crc16校验,多项式码选用16进制A001。
QQ群157028280
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯