[开发资料] 校验算法模块算法,直接移植就好

[复制链接]
167|7
LOVEEVER 发表于 2025-8-12 19:00 | 显示全部楼层 |阅读模式
校验算法模块(crc.h/.c)
提供常用CRC16/CRC32算法,接口简洁,便于移植。

  1. // crc.h
  2. #ifndef CRC_H
  3. #define CRC_H
  4. #include <stdint.h>
  5. uint16_tcrc16_ccitt(const uint8_t *data, uint32_t len, uint16_t init);
  6. uint32_tcrc32_simple(const uint8_t *data, uint32_t len, uint32_t init);
  7. #endif
  1. // crc.c
  2. #include "crc.h"
  3. uint16_tcrc16_ccitt(const uint8_t *data, uint32_t len, uint16_t init) {
  4.     uint16_t crc = init;
  5.     for (uint32_t i = 0; i < len; ++i) {
  6.         crc ^= (uint16_t)data[i] << 8;
  7.         for (int j = 0; j < 8; ++j)
  8.             crc = (crc & 0x8000) ? (crc << 1) ^ 0x1021 : (crc << 1);
  9.     }
  10.     return crc;
  11. }
  12. uint32_tcrc32_simple(const uint8_t *data, uint32_t len, uint32_t init) {
  13.     uint32_t crc = init;
  14.     for (uint32_t i = 0; i < len; ++i) {
  15.         crc ^= data[i];
  16.         for (int j = 0; j < 8; ++j)
  17.             crc = (crc & 1) ? (crc >> 1) ^ 0xEDB88320 : (crc >> 1);
  18.     }
  19.     return crc;
  20. }

AdaMaYun 发表于 2025-9-18 09:58 | 显示全部楼层
校验算法模块算法直接移植很实用
小小蚂蚁举千斤 发表于 2025-9-23 08:15 | 显示全部楼层
可以直接移植使用
jf101 发表于 2025-9-23 16:44 | 显示全部楼层
校验算法模块算法,直接移植就好
中国龙芯CDX 发表于 2025-9-25 15:22 | 显示全部楼层
校验算法模块算法
OKAKAKO 发表于 2025-9-26 17:09 | 显示全部楼层
很不错的校验算法模块算法
星辰大海不退缩 发表于 2025-9-27 13:35 | 显示全部楼层
校验算法模块算法,直接移植就好
小夏天的大西瓜 发表于 2025-9-28 15:56 | 显示全部楼层
很不错的校验算法模块算法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

2689

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部