|
本帖最后由 imfly89 于 2017-7-17 14:48 编辑
uint32_t crc32(uint8_t *ptr, uint8_t length)
{
uint8_t i;
uint32_t CRC32 = 0xffffffff; // Initial value
while(length--)
{
CRC32 ^= *ptr++; // crc ^= *data; data++;
for (i = 0; i < 8; ++i)
{
if (CRC32 & 1)
CRC32 = (CRC32 >> 1) ^ 0xEDB88320;// 0xEDB88320= reverse 0x04C11DB7
else
CRC32 = (CRC32 >> 1);
}
}
return ~CRC32;
}
以上代码输入 0x08,0x00,0x00,0x00。计算结果跟CRC工具一样。。
我想修改成输入0x08000000 ,即一个32位的数据,
uint32_t crc32(uint32_t *ptr, uint8_t length)
{
uint8_t i;
uint32_t CRC32 = 0xffffffff; // Initial value
while(length--)
{
CRC32 ^= *ptr++; // crc ^= *data; data++;
for (i = 0; i < 32; ++i)
{
if (CRC32 & 1)
CRC32 = (CRC32 >> 1) ^ 0xEDB88320;// 0xEDB88320= reverse 0x04C11DB7
else
CRC32 = (CRC32 >> 1);
}
}
return ~CRC32;
}
计算结果不对!!
求教大家怎么改? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|