📄 crc.c
字号:
#include<stdio.h>
typedef unsigned char uchar;
main()
{
uchar x[6]={0x55,0x44,0x33,0x22,0x11,0x00};
uchar js=0,i=0,crc,c,gx=0x07;
uchar cjs=0,ci=0,crct,ct;
//生成crc
crc=x[i++]; c=x[i++];
while(1){ if(crc>>7){ crc<<=1;
crc+=((c>>7)&1);
crc^=gx;
}
else {crc<<=1;
crc|=((c>>7)&1);
}
if(js>=7){if(i>=6)goto crc_end;
c=x[i++]; //加载下一个数据
js=0; //移位计数清零
}
else { c<<=1; //C左移一位
js++; //移位计数+1
}
}
crc_end:
x[5]=crc^0xff;
//检验生成的CRC
x[5]^=0xff;
printf("x[5]=%x\n",x[5]);
crct=x[ci++];ct=x[ci++];
while(1){ if(crct>>7){ crct<<=1;
crct+=((ct>>7)&1);
crct^=gx;
}
else {crct<<=1;
crct|=((ct>>7)&1);
}
if(cjs>=7){if(ci>=6)goto crc_t;
ct=x[ci++]; //加载下一个数据
cjs=0; //移位计数清零
}
else { ct<<=1; //C左移一位
cjs++; //移位计数+1
}
}
crc_t: if(crct)printf("error");
printf("\nright!\ncrct=%d ct=%d\n",crct,ct);
printf("%x %x %x %x %x 00\n%x %x %x %x %x %x\n%x",x[0],x[1],x[2],x[3],x[4],x[0],x[1],x[2],x[3],x[4],x[5],crc);
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -