刚开始学习CRC校验 仿照网上CRC16程序写了CRC32但是结果不正确 麻烦大佬帮忙解惑
【CRC16例子】
【我仿照写出的CRC32】
刚开始学习CRC校验 仿照网上CRC16程序写了CRC32但是结果不正确 麻烦大佬帮忙解惑
【CRC16例子】
【我仿照写出的CRC32】
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如需一对一服务私聊我哦问题分析: 根据提问者所给的信息,可以分析出以下可能存在的问题:
#include <stdio.h>
#include <stdint.h>
uint32_t crc32(uint8_t *data, uint32_t size)
{
uint32_t crc = 0xFFFFFFFF;
uint32_t poly = 0xEDB88320;
for (uint32_t i = 0; i < size; i++) {
crc ^= data[i];
for (uint32_t j = 0; j < 8; j++) {
crc = (crc >> 1) ^ (poly & (-(crc & 1))); // 位运算实现
}
}
return ~crc;
}
int main(void)
{
uint8_t data[] = "123456789";
uint32_t crc = crc32(data, sizeof(data)-1);
printf("CRC32: %08X\n", crc);
return 0;
}
这是一个简单的CRC32实现示例,可供参考。其中,data代表要进行CRC32校验的数据,size表示数据大小,crc32函数需要返回计算得到的CRC32校验结果。主函数中,将"123456789"传入作为数据进行CRC32校验,输出结果。