你想通过CRC表查每一帧数据对应的校验值吗?到这边我教你

2023-10-14 19:58

本文主要是介绍你想通过CRC表查每一帧数据对应的校验值吗?到这边我教你,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一 CRC校验的作用
在通信过程,传输数据对于我们就很重要,那么如何保证数据传输的正确性呢?如果在我们传输的数据之后添加一个数(这个数是双方都知道的一个数),对方都能接受到这个数的话是不是就能保证数据的准确性呢?这就用到了今天我们所要讲的CRC校验了。
二 CRC校验的原理
这一部分比较多,我就放到另一个博客里面讲解。
三 如何通过查表,来得出你想要的每一帧数据的校验码呢?
首先我们应该要清楚的是这个校验码就是我们所说的保证数据准确性而在原始数据之后添的一个数。
一定要看清楚我这里写的是哪个多项式下的表!!!!
/*****************************************************
描 述: CRC8校验子程序 x^8 + x ^5 + x ^4 + x ^0
入口参数: 指向数组指针,校验字节个数
出口参数: 8位CRC校验码
******************************************************/
这里主要写的是CRC_8的校验码的求法,代码是在Visual Studio 2017中写的,直接看代码!!
**#include
using namespace std;
//CRC表
unsigned char const CRC8Table[] = {
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
};
int CRC8_Table(unsigned char p, int counter)
{
unsigned int crc8 = 0;
//查表得到CRC码
for (; counter > 0; counter–) {
crc8 = CRC8Table[crc8^p];
p++;
}
return(crc8);
}
int main()
{
unsigned char data[] = { 0xaa,0xaa,0x18,0x03,0xc8,0x03,0xc8,0x03,0xc8,0x03,0xc8,
0x03,0xc8, 0x03,0xc8, 0x03,0xc8, 0x0a,0x17,0x00,0x3c,0x00,0x3c};
int len ;
len = sizeof(data) / sizeof(unsigned char);
//cout << len << endl;
int c = CRC8_Table( data, len);
cout << c << endl;
system(“pause”);
return 0;
}

说明:unsigned char data[] = { 0xaa,0xaa,0x18,0x03,0xc8,0x03,0xc8,0x03,0xc8,0x03,0xc8,
0x03,0xc8, 0x03,0xc8, 0x03,0xc8, 0x0a,0x17,0x00,0x3c,0x00,0x3c};
这个表示我们的原始数据,所以通过这个就可以求出任意一帧数据的校验码了,得出校验码后加到原始数据之后组成一帧新的数据,然后传给上位机。那么我们就可以在一个项目中测试到底传输的数据对不对了。

这篇关于你想通过CRC表查每一帧数据对应的校验值吗?到这边我教你的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212785

相关文章

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

Redis中的数据一致性问题以及解决方案

《Redis中的数据一致性问题以及解决方案》:本文主要介绍Redis中的数据一致性问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Redis 数据一致性问题的产生1. 单节点环境的一致性问题2. 网络分区和宕机3. 并发写入导致的脏数据4. 持

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例