近期對接客戶 利用串列埠通訊,其中要用到crc-ibm 8005 校驗方式,網上搜尋好久,就是對不上計算器算出來的結果,最後通過乙個國外的開源crc**,自己扣取成功:
先貼上 **:
#include #include #include #include #include #include #include #include #include #define crc_poly_sick 0x8005驗證結果:#define crc_start_sick 0x0000
unsigned short crc_sick( const unsigned char *input_str, size_t num_bytes ) /* crc_sick */
// aa 00 00 0b 0b 01 00 00
int main();
unsigned short crc_val = crc_sick(protocol_buffer_open_wifi, 8);
unsigned char crchi = (unsigned char)(crc_val >> 8); //高八位
unsigned char crclo = (unsigned char)crc_val;
printf("crchi:0x%x crclo:0x%x \n",crchi,crclo);
return 0;
}
(高低位反了,記得更換下)
CRC 16校驗原理
1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc 碼的基本原理 任意乙個由二進位制位串組成的 都可以和乙個係數僅為 0 和 1 取值的多項式一一對應。例如 1010111 對應的多項式為x6 x4 x2 x 1 而多項式為...
碼crc校驗 CRC16校驗計算流程
首先再次確認計算步驟 1 預置1個16位的暫存器為十六進製制ffff 即全為1111 1111 1111 1111 稱此暫存器為crc暫存器 2 把第乙個位轉換成8位二進位制資料 既通訊資訊幀的第乙個位元組 與16位的crc暫存器的低8位相異或,把結果放於crc暫存器,高八位資料不變 3 把crc暫...
CRC16校驗的學習
一般一些工業上儀器儀表都會選擇crc16校驗,而寫程式對幀資料的校驗也需要選擇crc16校驗看看對不對。所以選擇crc16校驗還是很有必要的。當然crc是2位元組的,具體儲存方式大端儲存還是小端儲存,不同機器不一樣。crc的初值也可能不一樣有的是0x0000,而有的又卻是0xffff具體怎麼選還有根...