📄 crc.cpp
字号:
//是正确的
#include "stdio.h"
#include "string.h"
void main(void)
{
int i;
int j;
unsigned short crc16[256];
unsigned char ch[256];
//给数组赋值
for(i=0;i<256;i++)
{
ch[i]=i;
}
//输出ch数组;
printf("ch数组:\n");
for(i=0;i<32;i++)
{
for(j=0;j<8;j++)
{
printf("%x",ch[i*8+j]);
printf(" ");
}
printf("\n");
}
//计算每一个字节的crc16;
j=0;
while(j<256) //下一个字节
{
crc16[j]=0;
for(i=0x80;i!=0;i/=2) //一个字节的下一位
{
if((crc16[j]&0x8000)!=0) //如果余式的最高位是1,(余式共16位)
{
crc16[j]*=2; //*余式CRC剩余2*/
crc16[j]^=0x1021; //再除以生成多项式
}
else
{
crc16[j]*=2;
}
if((ch[j]&i)!=0) //判断字节的每一位,
{
crc16[j]^=0x1021; //crc=crc^0x1021,再加上本位的CRC
}
}
j++;
}
printf("\n");
//输出crc16;
printf("对应crc16:\n");
for(i=0;i<32;i++)
{
for(j=0;j<8;j++)
{
printf("0x%x,",crc16[i*8+j]);
printf(" ");
}
printf("\n");
}
printf("\n");
}
/*
unsigned int crc16r(unsigned int crcword, unsigned int crc)
{
unsigned char i;
for(i = 0; i < 16; i++){
if(((crc ^ crcword ) & 0x0001) == 0) crc >>= 1;
else{
crc ^= 0x810;//0x0810;//CRC=X16+X12+X5+1
crc >>= 1;
crc |= 0x8000;
}
crcword >>= 1;
}
return crc;
}
const char* pMima="please";
i=0;
printf("请输入密码:");
while((strcmp(line,pMima)!=0)&&(i<3)
{)
gets(line);
i++;
}
if((i>2)&&(strcmp(line,pMima)!=0))
{
printf("你的密码是错误的!");
while(1);
}
else
{
;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -