qt crc校驗學習筆記


 

crc校驗,官方一大堆看不懂的數據文字多項式,我大白話說一說,

前置知識:需要被校驗的數據M(x)  約定的生成多項式G(x)   M(x)%G(x)的值就是crc值(即校驗位)  其中x=2(二進制)

正題:

循環冗余校驗碼由信息碼n位和校驗碼k位構成。k位校驗位拼接在n位數據位后面,n+k為循環冗余校驗碼的字長,又稱這個校驗碼(n+k,n)碼

n位信息位可以表示成為一個報文多項式M(x),最高冪次是x^(n-1)(n位二進制)。約定的生成多項式G(x)是一個k+1位的二進制數,因為最高冪次是x^k。將M(x)乘以x^k,即左移k位后,除以G(x),得到的k位余數就是校驗位

擴展:

實際的CRC校驗碼生成是采用二進制的模2算法(即減法不借位、加法不進位)計算出來的,這是一種異或操作。

 

 

 常見crc參數

//NAME (模型名字)
//WIDTH (生成的crc數據位寬度) 16
//POLY ibm(POLYNOMIAL_IBM,0x1021) ccitt(POLYNOMIAL_IBM,0x8005)
//REFIN (原始數據是否翻轉) false
//REFOUT (計算好crc之后是否進行翻轉) ibm(false) ccitt(true)
//XOROUT (計算crc值與此參數進行亦或之后才輸出) ibm(POLYNOMIAL_IBM,0x1021) ccitt(POLYNOMIAL_IBM,0x8005)
//INIT (CRC初始值) ibm(CRC_IBM_SEED,0xFFFF) ccitt(CRC_CCITT_SEED,0x1D0F)

注意 與1 異或(xor)取反    與0 異或(xor)還是本身

 

 

 

 

 

計算  http://www.ip33.com/crc.html

參考 https://cloud.tencent.com/developer/article/1704685

程序代碼和測試 demo

 https://blog.csdn.net/whik1194/article/details/108837333

 

 

//


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM