编程语言:c语言
根据设定的算法规则,输入字符串,计算得出校验数据;
代码如下:
#include <stdio.h>
int main(void)
{
//unsigned char ptr[31] = {0xAA ,0x1F ,0x08 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x2B ,0xD8 ,0xF9 ,0xFF ,0xFF ,0xA0 ,0xB3 ,0x01 ,0x00 ,0x56 ,0xD2 ,0x04 ,0x00 ,0x00 ,0x3F ,0x3C ,0x34 ,0x01,0x00};
unsigned char ptr[31] = {0xAA ,0x1F ,0x08 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x2B ,0xEF ,0x04 ,0x00 ,0x00 ,0xA0 ,0xB3 ,0x01 ,0x00 ,0x56 ,0xD2 ,0x04 ,0x00 ,0x00 ,0x3F ,0x3C ,0x34 ,0x01,0x00};
unsigned char i ,len;
unsigned char t = 0;
unsigned char crc = 0x00;
len = sizeof(ptr);
//最后一位保留给校验位
int len_t=len-1;
while(len_t--)
{
crc ^= ptr[t++];
for (i=8; i>0; --i)
{
if (crc & 0x80)
{
crc = (crc << 1) ^ 0xD5;
}
else
crc = (crc << 1);
}
}
printf("crc = 0x%x \n",crc);
ptr[len-1] = crc;
for(i=0;i<len;i++)
{
printf("[%02X]",ptr[i]);
}
}
运行结果如下图: