crc校验码计算原理 crc16校验代码中,多项式码明明是8005为什么要用A001来异或,还有CRC16-REV=A001是什么意思?
浏览量:1146
时间:2021-03-16 15:22:35
作者:admin
crc16校验代码中,多项式码明明是8005为什么要用A001来异或,还有CRC16-REV=A001是什么意思?
0x8005=10000000000101B0XA001=1010000000001B与两个二进制高位和低位相比,完全相反。CRC校验分为正向校验和反向校验。正向检查的高位在左侧,反向检查的低位在左侧。例如,当正向CRC校验的数据为0xaf5d=1010 1111 0101 1101b和0x8005的异或时,应为0xaf5d^0x8005,使用0xa001校验时,0xaf5d的高低位顺序应为0xbaf5=1011 1010 1111 0101b。正向校验使用左移位,反向校验使用右移位。其实原理是一样的。它取决于数据的高位和低位的顺序。
用查表发实现crc16校验怎么实现?
1)将最后一个CRC校验码向右移动一个字节;(2)将移出的字节与要校验的新字节异或;(3)在预生成的代码表中对计算值进行索引,以获得相应的值(称为余数);(4) 将所获得的值与在步骤(1)(5)中移到右边的值异或,如果要检查的数据已经被处理,则步骤(4)的结果是最终的CRC检查码。如果仍有数据要处理,请转至步骤(1)以运行。CRC32=CRC u32 utbl[(CRC32^((unsigned uuu8*)P)[i]&0xff]^(CRC32>>8)?这很简单。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。