C程序计算CRC

C program to calculate CRC

本文关键字:CRC 计算 程序      更新时间:2023-10-16

大家晚安,我一直在基于以下逻辑处理此代码:要获得CRC,您需要执行2个XOR操作,第一个:结果=数据^生成器,然后它在16位上一点一点地移动>>并一遍又一遍地执行XOR,因此crc最终是=结果^生成器,直到它分析整个32位序列。生成器是我老师提供的多项式。

到目前为止,这是代码:

{
int dato;       // 16 bits
int polin;      // generador
double r1;      // resultado de la trama de 32 bits

dato = 0x0000000001000100;      
polin = 0x82086DB;     
r1 = dato ^ polin;     // XOR
polin >>= 1;
  while(r1 > 0){
  r1 = dato ^ polin;
  r1 = 0x1 >> dato; 
  }
 printf("%x %x",dato,polin);
 printf("nr CRC es: ", r1);
 getch();   
}

我的问题是,当我尝试执行它时,它停留在"while"内并且不提供任何结果,希望有人可以帮助我。

while(r1 > 0){
   r1 = dato ^ polin;
   r1 = 0x1 >> dato; 
}

while 循环永远不会退出,因为 r1 的值在第一次迭代后永远不会更改。从不使用第一行的结果,第二行每次都返回相同的结果,因为循环不会修改 dato 的值。