#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值不同...