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