CRC32算法笔记


这几天在研究CRC32的计算过程,看了CRC算法的原理,也看了不少通过移位法实现的代码,但是算出的结果跟校验工具算的不一致。

折腾了好长时间,终于找到一个手工计算CRC32的文章,再对照IEEE 802.3标准的CRC计算过程,才算把CRC32的计算搞定。

这里把计算过程的要点记录一下:

1) CRC32是CRC算法一种,先参考Wiki上CRC算法的原理和实例搞明白基本的计算方法。

2) 最常见的CRC32算法就是IEEE 802.3里生成FCS字段用的那个:

a) CRC32使用的Polynomial是 polynomial

b) IEEE 802.3在传送数据时使用的是最低有效位优先 (least significant bit first),所以要根据你机器的架构转换成有效的比特流输入。同理,输出流也一样。

c) 为了有效识别输入流开头和结尾的零,开头的32位要按位取反(complement),最后计算出的余数也要按位取反。

按照上述方法计算能得到想要的CRC32值了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM