# crc32_check **Repository Path**: voidking777/crc32_check ## Basic Information - **Project Name**: crc32_check - **Description**: 标准CRC32校验算法C语言实现 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-21 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #crc32_check 标准 CRC32 校验算法 C 语言实现(表驱动法,兼容嵌入式与 PC 环境) --- ## 介绍 本项目实现了**标准 CRC32 校验算法**(多项式:`0x04C11DB7`,初始值:`0xFFFFFFFF`,结果异或:`0xFFFFFFFF`),采用**表驱动法**提升计算效率,代码带详细注释,适合新手学习与工程复用。 ### 核心特性 - ✅ 标准 CRC32 规范,结果与通用工具一致 - ✅ 表驱动实现,计算速度远快于逐位计算 - ✅ 支持**一次性计算**与**增量式计算**(适合大文件/数据流场景) - ✅ 代码结构清晰,注释详尽,便于移植到 ESP32 等嵌入式平台 - ✅ 纯 C 实现,无平台依赖,可直接嵌入各类项目 --- ## 软件架构 crc32_check/ ├── crc32.c # CRC32 算法实现(包含查表表与核心函数) ├── crc32.h # 函数声明头文件(供外部调用) └── README.md # 项目说明文档 plaintext - **`crc32.c`**:包含预计算的 CRC32 查表表、`crc32_calculate()`(一次性计算)与 `crc32_update()`(增量计算)的具体实现 - **`crc32.h`**:对外暴露函数接口,通过头文件保护宏避免重复包含 - **`README.md`**:项目说明、使用示例与编译指南 --- ## 安装教程 1. **下载代码** - 直接克隆仓库:`git clone https://gitee.com/voidking777/crc32_check.git` - 或在仓库主页点击「克隆/下载 → 下载 ZIP」 2. **引入项目** - 将 `crc32.c` 和 `crc32.h` 复制到你的工程目录 - 在需要使用 CRC32 功能的源文件中添加:`#include "crc32.h"` 3. **编译配置** - 确保编译器支持 C99 及以上标准 - 将 `crc32.c` 加入编译列表(如 Makefile/CMakeLists.txt) --- ## 使用说明 ### 1. 一次性计算(适合小数据) ```c #include "crc32.h" #include int main(void) { // 待校验数据 const uint8_t data[] = "Hello, CRC32!"; // 数据长度(减1是为了去掉字符串末尾的 '\0') size_t data_len = sizeof(data) - 1; // 计算 CRC32 校验值 uint32_t crc = crc32_calculate(data, data_len); printf("CRC32 校验值: 0x%08X\n", crc); return 0; } 2. 增量式计算(适合大文件 / 数据流) c 运行 #include "crc32.h" #include int main(void) { const uint8_t data[] = "Hello, CRC32!"; size_t data_len = sizeof(data) - 1; // 初始化 CRC 值(必须传入 0xFFFFFFFF) uint32_t crc = 0xFFFFFFFF; // 分两次计算(模拟大文件分段读取) crc = crc32_update(crc, data, 6); // 计算前 6 字节:"Hello," crc = crc32_update(crc, data + 6, 7); // 计算后 7 字节:" CRC32!" // 最后一步:完成最终异或 crc ^= 0xFFFFFFFF; printf("增量计算 CRC32: 0x%08X\n", crc); return 0; } 3. 编译运行示例 bash 运行 # 编译(将 main.c、crc32.c 一起编译) gcc main.c crc32.c -o crc32_test # 运行 ./crc32_test 参与贡献 Fork 本仓库 新建特性分支:git checkout -b feature/xxx 提交代码:git commit -am 'Add some feature' 推送至分支:git push origin feature/xxx 新建 Pull Request 注意事项 本实现为标准 CRC32,若需兼容其他变体(如 CRC32/MPEG-2),需修改多项式、初始值或结果异或规则 嵌入式平台使用时,可根据需求裁剪代码(如删除增量计算函数以节省 Flash) 查表表 crc32_table 为预计算结果,无需修改 plaintext ---