uint32_t crc32(uint8_t *data, uint32_t len) {
uint32_t crc = 0xFFFFFFFF; // 初始值
uint32_t polynomial = 0x04C11DB7; // 多项式
while (len--) {
crc ^= *data++;
for (int i = 0; i < 8; i++) {
if (crc & 1) {
crc = (crc >> 1) ^ polynomial;
} else {
crc >>= 1;
}
}
}
return crc ^ 0xFFFFFFFF; // 最终异或值
}
uint8_t data[] = {0x01, 0x02, 0x03, 0x04}; // 需要校验的数据
uint32_t crc_result = crc32(data, sizeof(data)); // 调用CRC函数计算校验码
printf("CRC-32: 0x%X\n", crc_result); // 输出校验结果
|