当前位置: 首页 > news >正文

CRC8算法通用版本

最近在开发一款新的芯片,涉及到crc8数据校验算法部分,现对此算法记录如下

  1. crc8参考网站
    crc8
    在这里插入图片描述2.C语言实现代码如下
#include <stdio.h>
#include <stdint.h>#define CRC8_POLY       0x39    // 多项式值
#define CRC8_INIT       0x00    // 初始值
#define CRC8_OR         0x00    // 结果异或值   
#define REFIN           true    // 输入数据字节反转
#define REFOUT          true    // 输出结果字节反转// 字节反转函数(8位)
uint8_t reverse_byte(uint8_t data) {uint8_t result = 0;for (int i = 0; i < 8; i++) {result <<= 1;result |= (data & 0x01);data >>= 1;}return result;
}uint8_t crc8_cal(const uint8_t* data, uint32_t length) {uint8_t crc = CRC8_INIT;uint8_t byte_data;for (uint32_t i = 0; i < length; i++) {// 根据RefIn参数决定是否反转输入字节if (REFIN) {byte_data = reverse_byte(data[i]);}else {byte_data = data[i];}crc ^= byte_data;// 处理8位数据for (int j = 0; j < 8; j++) {if (crc & 0x80) {crc = (crc << 1) ^ CRC8_POLY;}else {crc = crc << 1;}}}// 根据RefOut参数决定是否反转输出结果if (REFOUT) {crc = reverse_byte(crc );}//最终异或crc ^= CRC8_OR;return crc;
}
/*** 测试函数 - 验证算法正确性* 测试数据: 0xB4, 0x3C, 0xB5, 0x03, 0x56* 预期结果: */
int main()
{uint8_t result = 0;uint8_t test_data[] = { 0xB4, 0x3C, 0xB5, 0x03, 0x56 };uint16_t data_len = sizeof(test_data) / sizeof(test_data[0]);printf("测试数据: ");for (int i = 0; i < data_len; i++) {printf("%02X ", test_data[i]);}printf("\n");result = crc8_cal(test_data, data_len);printf("crc8_bluetooth_calculate 计算结果: 0x%02X\n", result);return 0;
}

3.可以结合网站上的计算和算法进行验证

http://www.dtcms.com/a/578919.html

相关文章:

  • 如何在微信公众号内部做网站建设速干裤移动网站
  • 保定seo建站盐亭网站建设
  • 国家互联网信息办公室关于发布第十四批深度合成服务算法备案信息的公告
  • 开设购物网站的方案wordpress评论自动刷新
  • 网站百度百科怎么做企业在线购物网站建设
  • ROS 基础语法速通(Noetic + Humble)——从 0 到能跑的完整示例
  • 建什么网站收益比较号互联网营销师考试内容
  • 苏州网络推广苏州网站建设睿思设计
  • 网站开发流程甘特图网站图片大小多少合适
  • 闸北建设机械网站高校思政网站建设意义
  • 网络销售模式 自建网站化妆品商城网站建设策划方案
  • 深度学习_原理和进阶_PyTorch入门(2)后续语法3
  • 微信上怎么做网站自己做动画网站
  • 农家乐网站免费模板网站建设 国外
  • FICO的功能范围
  • [vulhub靶机通关]DC-6(命令执行_nmap提权)
  • 大数据分析网站建设网站公司哪个好
  • 海口网站建设王道下拉棒建一个小型的购物网站服务器一年要多少钱
  • 做票据业务的p2p网站获客牛全网营销
  • 建设网站基础怎样提高网站的权重
  • 网站开发文档word网站建设中搭建页面结构
  • 用网站做平台网站的侧边栏怎么做
  • 电商网站运营流程方便面网络营销推广方案
  • fluent管道欧拉壁面水膜仿真
  • 基于spring-boot-admin实现对应用、数据库、nginx等监控
  • 台州公司做网站学校让做网站做完怎么交
  • 回过头来重新对C语言进行深度学习(一)
  • 网站多久才能做起来三明市建设局网站
  • 《Effective Java》解读第9条:try-with-resources 优先于 try-finally
  • redis 大key问题整理