C语言CRC6校验算法x6+x5+1
以下是C语言实现CRC6校验算法x6+x5+1的代码:
#include <stdio.h>
#include <stdlib.h>
#define POLY 0x3D
unsigned char crc6(unsigned char* data, int len)
{
unsigned char crc = 0;
int i, j;
for (i = 0; i < len; i++)
{
crc ^= data[i];
for (j = 0; j < 8; j++)
{
if (crc & 0x80)
{
crc = (crc << 1) ^ POLY;
}
else
{
crc <<= 1;
}
}
}
return (crc >> 2) & 0x3F;
}
int main()
{
unsigned char data[] = { 0x12, 0x34, 0x56 };
unsigned char crc = crc6(data, sizeof(data) / sizeof(data[0]));
printf("CRC6: %02X\n", crc);
return 0;
}
其中,POLY为多项式0x3D,使用异或运算符^实现异或校验,使用移位运算符<<和>>实现多项式计算。最后,将计算结果向右移动2位,取低6位作为校验码。
原文地址: https://www.cveoy.top/t/topic/bIGy 著作权归作者所有。请勿转载和采集!