|
我写了一段程序,输入数据后,怎么也不对,希望大家给予指点。
程序说明如下,程序目的用来计算0x55的CRC32编码值,算出结果为0xffffff00.
利用网页http://www.lammertbies.nl/comm/info/crc-calculation.html?crc=55&method=hex,算出的结果不相同。
两个用到的生成多项式都是0x04C11DB7,不知道程序错在什么地方,希望大家指点,非常感谢!
#include
#include
static int CRC32Table[256];
void crc32Init(void)
{
int i = 0, j = 0;
int crc = 0;
int tmp;
for (i = 0; i <= 255; i++)
{
crc = (i < <24);
for (j = 0; j < 8; j++)
{
tmp = ((crc^(1 < <31))? 1 : 0);
// printf("\r\n%x",tmp);
crc < <= 1;
if (tmp)
{
crc ^= (0x04C11DB7);
}
}
CRC32Table = crc;
}
}
int getCRC32(int init_value, char *buf, int nBytes)
{
const char *p;
int temp1 = 0;
int temp2 = 0;
int crc = init_value;
int rtn = 0;
p = (const char*) buf;
while (nBytes-- != 0)
{
temp1 = (crc >> 24);
crc < <= 8;
crc ^= CRC32Table[((temp1) ^ (*p))];
p++;
}
rtn = crc;
return(rtn);
}
int main(void)
{
char BUF[20];
int CRC32 = 0, i = 0;
// for(i=0;i <20;i++)
// BUF = 0xcc;
BUF[1] = 0x55;
crc32Init();
#if 0
for(i=0;i <256;i++)
{
printf("\r\n%x",CRC32Table);
}
#endif
CRC32 = getCRC32(0xffffffff, BUF, 1);
printf("\r\nCRC32: ");
printf("%x",CRC32);
system("pause");
return 0;
}
|
|