crc16演算法原理
2022-07-31由 阿陽很陽光 發表于 林業
什麼是偶校驗碼
除了CRC8檢查外,還有CRC16、CRC32。 此外,以下常見的CRC16標準在各個標準中使用。 演算法原理基本一致。 就是說資料的輸入輸出有差異。 這些規格的差異如下所示。
CRC16_CCITT :
多項式x^16x^12x^51(0x1021 ),初始值0x0000,低位在前,高位在後,結果與0x0000異或;
CRC16_CCITT_FALSE :
多項式x^16x^12x^51(0x1021 ),初始值0xFFFF,低位後,高位前,與結果0x0000異或;
CRC16_XMODEM :
多項式x^16x^12x^51(0x1021 ),初始值0x0000,低位後,高位前,結果與0x0000異或;
CRC16_X25 :
多項式x^16x^12x^51(0x1021 ),初始值0x0000,低位在前,高位在後,結果與0xFFFF異或;
CRC16_MODBUS :
多項式x^16x^15x^21(0x8005 ),初始值0xFFFF,低位在前,高位在後,結果與0x0000異或;
CRC16_IBM :
多項式x^16x^15x^21(0x8005 ),初始值0x0000,低位在前,高位在後,結果與0x0000異或; CRC16_MAXIM :多項式x^16x^15x^21(0x8005 )初始值0x0000,低位在前,高位在後,結果與0xFFFF異或;
CRC16_USB :
多項式x^16x^15x^21(0x8005 ),初始值0xFFFF,低位在前,高位在後,與結果0xFFFF異或;
CRC16演算法原理:
根據CRC16標準選擇初始值CRCIn的值;
2 。資料的第一個位元組與CRCIn的前8位異或;
3 。確定最高有效位元,如果該位元為0則左移一個,如果位元為1則左移一個,以與多項式Hex碼異或;
4。8位重複3直到所有移位計算結束;
5 。操作所有輸入資料重複以上步驟,得到16位CRC校驗碼16位。