【C++】CRC-8校验程序,小端格式

生成多项式为 CRC-8 x8+x5+x4+1 0x31(0x131)
小端格式,小端格式,小端格式

代码:

#include <iostream>
#include <sstream>
#include <iomanip>
#include <stdio.h> 
#include <stdint.h>

/* 生成多项式为 CRC-8 x8+x5+x4+1 0x31(0x131)小端顺序 */
uint8_t crc_high_first(uint8_t *ptr)//, uint8_t len)
{
uint8_t len=5;
uint8_t i;
uint8_t crc = 0x00; /* 计算的初始 CRC 值 */

while(len--)
{
crc ^= *ptr++; /* 每次先与需要计算的数据异或,计算完指向下一数据 */
for (i = 8; i > 0; --i) /* 下面这段计算过程与计算一个字节 CRC 一样 */
{
if (crc & 0x80)
crc = (crc << 1) ^ 0x31;
else
crc = (crc << 1);
}
}
return crc;
}

/*十进制转16进制*/
std::string decToHex(int decimal) {
    std::stringstream ss;
    ss << std::hex << decimal;
    return ss.str();
}

/*主代码*/
int main(uint8_t len, uint8_t crc)
{
	//uint8_t xxx[5]={0x07,0x00,0x00,0x05,0xAD};
	uint8_t xxx[5]={0x0D,0x00,0x00,0x00,0x00};
	crc=crc_high_first(xxx);//,len);
	int decimalNumber = crc;
    std::string hexString = decToHex(decimalNumber);
    //std::cout << "The hexadecimal of " << decimalNumber << " is " << hexString << std::endl;
    std::cout << hexString << std::endl;
	return 0;
 } 
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值