wilhelmina2 发表于 2024-12-24 08:30

‌在N32单片机上实现CRC校验




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


页: [1]
查看完整版本: ‌在N32单片机上实现CRC校验