C程序计算CRC

时间:2013-10-01 04:07:34

标签: c++ c crc redundancy cyclic

晚安大家,我一直在研究这个代码,基于获得你需要做2个XOR操作的CRC的逻辑,第一个:结果=数据^生成器,然后它移动>>在16位上逐位进行并且反复进行XOR,因此crc final = = result ^ generator,直到它分析整个32位序列。 Generator是我老师提供的一个多项式。

到目前为止,这是代码:

{

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("\n\r CRC es: ", r1);
 getch();   
}

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

1 个答案:

答案 0 :(得分:1)

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

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