CRC8校验接口(C语言)
【摘要】
1. crc8校验接口
static uint8_t crc8( uint8_t * p_buffer, uint16_t buf_size ){ uint8_t crc = 0; uint8_t i=0; if(buf_size <= 0) { return crc; } ...
1. crc8校验接口
-
static uint8_t crc8( uint8_t * p_buffer, uint16_t buf_size )
-
{
-
uint8_t crc = 0;
-
uint8_t i=0;
-
if(buf_size <= 0)
-
{
-
return crc;
-
}
-
while( buf_size-- )
-
{
-
for ( i = 0x80; i != 0; i /= 2 )
-
{
-
if ( (crc & 0x80) != 0)
-
{
-
crc *= 2;
-
crc ^= 0x07;
-
}
-
else
-
{
-
crc *= 2;
-
}
-
-
if ( (*p_buffer & i) != 0 )
-
{
-
crc ^= 0x07;
-
}
-
}
-
p_buffer++;
-
}
-
return crc;
-
}
2.测试
-
#include "stdlib.h"
-
#include <stdio.h>
-
-
typedef unsigned char uint8_t;
-
typedef unsigned int uint16_t;
-
-
int main(void)
-
{
-
uint8_t tempbuf[]={0x01,0x02,0x03,0x4,0x5};
-
uint8_t crc=0;
-
-
crc=crc8(tempbuf,5);
-
-
printf("crc %x\r\n",crc);
-
return 0;
-
-
}
运行:
-
root@ubuntu:/home/smbshare/crc8# gcc -o crc crc8.c
-
root@ubuntu:/home/smbshare/crc8# ./crc
-
crc bc
对比工具检验
说明接口正确。
文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。
原文链接:xintiaobao.blog.csdn.net/article/details/102930247
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)