查詢表實現的CRC16

2021-06-29 00:11:14 字數 1226 閱讀 5142

#include#include#include/*

* crc16查詢表生成

* table[256] : 存放查詢表的陣列

* generator : 生成多項式,x^16+x^12+x^5+1,其生成多項式為0x1021

*/void crc16_make_table(u_int16_t table[256],const u_int16_t generator)

table[i] = c; }}

/* * crc16校驗

* table : crc16_make_table生成的查詢表

* generator : 生成多項式,x^16+x^12+x^5+1,其生成多項式為0x1021

* buf : 校驗資料

* start : 資料起始位置

* length : 資料長度

* 返回值 : crc16校驗結果

*/u_int16_t crc16_update(const u_int16_t *table, u_int16_t initial, const u_int8_t *buf, const int start, const int length)

return initial;

}u_int16_t crc16_update2(const u_int16_t *table, u_int16_t initial, const u_int8_t *buf, const int start, const int length)

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

return initial;}/*

* crc16校驗

* initial : 存器初值

* generator : 生成多項式,x^16+x^12+x^5+1,其生成多項式為0x1021

* buf : 校驗資料

* start : 資料起始位置

* length : 資料長度

* 返回值 : crc16校驗結果

*/u_int16_t crc_16(u_int16_t initial,const u_int16_t generator,const u_int8_t *buf,const int start, const int length)

} for (i = 0; i < 16; ++i)

return initial;

}int main()

crc16碼表的使用 查表法計算CRC16校驗值

crc16是微控制器程式中常用的一種校驗演算法。依據所採用多項式的不同,得到的結果也不相同。常用的多項式有crc 16 ibm和crc 16 ccitt等。本文 採用的多項式為crc 16 ibm x16 x15 x2 1。閒言少敘,下面是查表法計算crc16的 檔名稱 crc16.c 簡要描述 c...

java實現的CRC16演算法

crc 是先調入一值是全 1 的 16 位暫存器,然後呼叫一過程將訊息中連續的 8 位位元組各當前暫存器中的值進行處理。僅每個字元中的 8bit 資料對 crc 有效,起始位和停止位以及奇偶校驗位均無效。crc 校驗位元組的生成步驟如下 裝乙個 16 位暫存器,所有數字均為 1。取被校驗串的乙個位元...

CRC16校驗演算法實現

迴圈冗餘碼校驗英文名稱為cyclical redundancy check,簡稱crc。它是利用除法及餘數的原理來作錯誤偵測 error detecting 的。實際應用時,傳送裝置計算出crc值並隨資料一同傳送給接收裝置,接收裝置對收到的資料重新計算crc並與收到的crc相比較,若兩個crc值不同...