- 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); // 输出校验结果
|