打印
[其它应用]

分享一个CRC8的计算实现

[复制链接]
2859|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雾里闲逛|  楼主 | 2025-4-27 00:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CRC-8软件实现
以多项式G(X) = X^8+X^2+X^1+1来实现。
#define FACTOR (0x107 & 0xFF) //多项式因子(取低8bit)
unsigned char calcCRC(unsigned char *pdat, unsigned int len)
{
    unsigned char j;
    unsigned char crc = 0x00;
    while(len--)
        {
        crc ^= (*pdat++);//前一字节计算CRC后的结果异或上后一字节,再次计算CRC
        for (j=8; j>0; j--)
        {
                 crc <<= 1;
            if (crc & 0x80)//高位为1,需要异或;否则,不需要
            {
                crc ^= FACTOR;
            }
        }
    }

    return crc;
}



使用特权

评论回复
沙发
分形梦想家| | 2025-4-27 15:08 | 只看该作者
楼主,这个都用在哪些应用上面啊

使用特权

评论回复
板凳
jobszheng| | 2025-4-27 19:47 | 只看该作者
分形梦想家 发表于 2025-4-27 15:08
楼主,这个都用在哪些应用上面啊

传输数据或才校验数据小于128字节时,可以使用CRC8算法

使用特权

评论回复
地板
分形梦想家| | 2025-4-27 20:44 | 只看该作者
明白了。
不过,为什么会出错啊

使用特权

评论回复
5
记忆花园| | 2025-4-28 18:36 | 只看该作者
这个CRC8的算法 很实用的。收下了,谢谢楼主分享

使用特权

评论回复
6
AdaMaYun| | 2025-4-29 16:12 | 只看该作者
CR8校验学习一下

使用特权

评论回复
7
OKAKAKO| | 2025-4-29 16:45 | 只看该作者
CRC8的算法 很实用的

使用特权

评论回复
8
银河漫步| | 2025-5-8 15:50 | 只看该作者
这个校验与校验和算法,哪个更靠谱一下啊

使用特权

评论回复
9
破晓战神| | 2025-5-23 18:57 | 只看该作者
这个实现很简洁,不过在实际应用中,CRC8的多项式选择和初始化值可能会有所不同,需要根据具体的协议来调整。

使用特权

评论回复
10
穷得响叮当侠| | 2025-5-24 09:29 | 只看该作者
这个实现看起来是基于C语言的,使用了一个简单的循环来计算CRC8值。代码简洁,易于理解。

使用特权

评论回复
11
雾里闲逛|  楼主 | 2025-5-26 02:57 | 只看该作者
银河漫步 发表于 2025-5-8 15:50
这个校验与校验和算法,哪个更靠谱一下啊

针对不同的出错机制与数据量而定。
比如通讯故障CRC校验和校验和的差别不大,毕竟出错的概率都挺低的。
但对于错过错误,这时校验和的就有点力不从心了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

31

帖子

0

粉丝