CRC冗餘校驗的C語言實現

2021-07-23 12:01:18 字數 841 閱讀 8900

crc即迴圈冗餘校驗:

是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查(crc)是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。

對於16位迴圈冗餘效驗(crc-16),crc結果為單字,其低位元組在前,高位元組在後。其生成步驟大致如下:

1) 設定乙個16位的crc暫存器,並賦以初值0xffff

2) 將資料幀中的第乙個位元組,與crc暫存器的低8位按位異或,並儲存在crc暫存器中

3) 將crc暫存器右移1位,,並檢測移出的最低位是否為1,如果最低位為1,則將crc暫存器與固定數0xa001異或

4) 重複步驟3共8次

5) 對資料幀的下乙個位元組重複步驟2,3,4,直到資料域的最後乙個資料

6) 最後的crc暫存器中的內容,就是最後的效驗值,將其附加在資料幀的最後乙個資料之後,並保持低8位在前,高8位在後的放置。

通過c語言實現結果如下:

#include typedef unsigned short uint16;

int main()

; char *buf;

buf=&a[0];

unsigned char i,j,check;

for( i=0; i<6; i++)

buf++;

}printf("%x",crc);

return 0;

}

其中,char a[6]=;為我自己取得待檢測資料幀。

執行結果為低位在前高位在後,即校驗結果為 01 03 00 00 00 0a

迴圈冗餘校驗 CRC32 的 C 語言實現

crc即迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。crc校驗實用程式庫在資料儲存和資料通訊領域,為了保證資料的正確,就不得不採用檢錯的手段。下面是crc32的c語言實現,經過測試,能夠正確執行...

c語言實現CRC校驗和

下面我就將今天的demo 簡單的注釋一下 在傳送方的buffer 22 中,前二十個資料為要傳送的資料,而後兩位即buffer 20 和buffer 21 中的資料就是函式int calcrc int crc,const char buf,int len 產生的crc校驗和。如下 intmain i...

CRC校驗的理解和C語言實現

1 crc是什麼 crc檢驗的基本思想是利用線性編碼理論,在傳送端根據要傳送的k位二進位製碼序列,以一定的規則產生乙個檢驗碼r位 就是crc碼 附在資訊後面,構成乙個新的二進位製碼序列數共 k r 位,最後傳送出去。接收端根據同樣的規則校驗,以確定傳送中是否出錯。接收端有兩種處理方式 1 計算k位序...