#include "csw_crc.h"
/**第三方校验工具
* http://www.ip33.com/crc.html
*/
uint8_t csw_crc8(uint8_t *pbuf, uint16_t len)
{
uint8_t crc = 0x00; //初始值
uint8_t crc_poly = 0x07;
while (len--)
{
crc ^= *pbuf;
for (uint8_t i = 0; i < 8; i++)
{
if (crc & 0x80) //判断最高位为1?
{
crc = (crc << 1) ^ crc_poly;
}
else //最高位为0
{
crc = crc << 1;
}
}
pbuf++;
}
return crc ^0x00;
}
uint16_t csw_crc16(uint8_t *pbuf, uint16_t len)
{
uint16_t crc = 0xFFFF;
while(len--)
{
crc ^= *pbuf;
for (uint8_t i = 0; i < 8; i++)
{
if (crc & 1)
{
crc >>= 1;
crc ^= 0xA001;
}
else
crc >>= 1;
}
pbuf++;
}
return (crc);
}
uint32_t csw_crc32(uint8_t *pbuf, uint32_t len)
{
uint32_t crc, mask;
crc = 0xFFFFFFFF;
while(len--)
{
crc = crc ^ (uint32_t)(*pbuf);
for (uint8_t j = 0; j < 8; j++)
{
mask = -(crc & 1);
crc = (crc >> 1) ^ (0xEDB88320 & mask);
}
pbuf++;
}
return ~crc;
}
没有合适的资源?快使用搜索试试~ 我知道了~
csw-crc32-crc16-crc8.zip
共2个文件
h:1个
c:1个
需积分: 10 0 下载量 56 浏览量
2023-04-04
17:38:10
上传
评论
收藏 967B ZIP 举报
温馨提示
基于c语言写的crc校验生成函数,实现了crc8,crc16,crc32,代码精简实用,封装巧妙合理,并且内附第三方crc校验工具验证代码。
资源推荐
资源详情
资源评论
收起资源包目录
csw_crc.zip (2个子文件)
csw_crc.h 212B
csw_crc.c 1KB
共 2 条
- 1
资源评论
这个网友未命名
- 粉丝: 1
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功