#include <stdio.h>
#include <string.h>
int data[30]; // 数据
int poly[30]; // 生成式
int main(){
char str[30];
// 输入数据
scanf("%s", str);
int data_len = strlen(str);
for (int i = 0; i < data_len; i++){
data[i] = str[i] - '0';
}
// 输入生成式
scanf("%s", str);
int crc_len = strlen(str);
for (int i = 0; i < crc_len; i++){
poly[i] = str[i] - '0';
}
// 补0
for (int i = 0; i < crc_len-1; i++){
data[data_len+i] = 0;
}
// 模2除法
for (int i = 0; i < data_len;){
int start = i;
for (int j = 0; j < crc_len; j++){
data[start+j]^=poly[j];
}
// 去中间结果的头部0,对齐除数
while (data[start] == 0)
start++;
i = start;
}
// 输出余数
for (int i = data_len; i < data_len+crc_len-1; i++){
printf("%d", data[i]);
}
}
标签:crc,int,++,len,校验码,CRC,str,C语言,data
From: https://www.cnblogs.com/qiuliw/p/18666998