1. 程式人生 > >怎麼計算crc16校驗資料的校驗碼

怎麼計算crc16校驗資料的校驗碼

第一、CRC-16校驗碼計算方法:

常用查表法和計演算法。計算方法一般都是:
(1)、預置1個16位的暫存器為十六進位制FFFF(即全為1),稱此暫存器為CRC暫存器;
(2)、把第一個8位二進位制資料(既通訊資訊幀的第一個位元組)與16位的CRC暫存器的低
       8位相異或,把結果放於CRC暫存器,高八位資料不變;
(3)、把CRC暫存器的內容右移一位(朝低位)用0填補最高位,並檢查右移後的移出位;
(4)、如果移出位為0:重複第3步(再次右移一位);如果移出位為1,CRC暫存器與多

    項式A001(1010 0000 0000 0001)進行異或;
(5)、重複步驟3和4,直到右移8次,這樣整個8位資料全部進行了處理;
(6)、重複步驟2到步驟5,進行通訊資訊幀下一個位元組的處理;
(7)、將該通訊資訊幀所有位元組按上述步驟計算完成後,得到的16位CRC暫存器的高、低
       位元組進行交換;
(8)、最後得到的CRC暫存器內容即為:CRC碼。

以上計算步驟中的多項式A001是8005按位顛倒後的結果。

舉例說明:

我要傳送的資料是(十六進位制的形式)2D 00 03 00 07

通過串列埠助手傳送資料的返回可以看出,校驗碼應該是39 C4

由於crc16校驗的計算方法是固定的,所以同樣的資料的校驗碼是一樣的

那麼一下是具體的計算過程: