CRC8
根据一个字节数据的CRC校验实现思想,两个字节或多个字节的数据也是同样的道理,加一层循环就可以了,代码实现如下:
- #define CRC8_POLYNOMIAL 0x31
- uint8_t CheckCrc8(uint8_t* const message, uint8_t initial_value)
- {
- uint8_t remainder; //余数
- uint8_t i = 0, j = 0; //循环变量
- /* 初始化 */
- remainder = initial_value;
- for(j = 0; j < 2;j++)
- {
- remainder ^= message[j];
- /* 从最高位开始依次计算 */
- for (i = 0; i < 8; i++)
- {
- if (remainder & 0x80)
- {
- remainder = (remainder << 1)^CRC8_POLYNOMIAL;
- }
- else
- {
- remainder = (remainder << 1);
- }
- }
- }
- /* 返回计算的CRC码 */
- return remainder;
- }
|