CRC(循环冗余校验)笔记

循环冗余校验是一种用于校验通信链路上数字传输准确性的计算方法(通过某种数学运算来建立数据位和校验位的约定关系的 1 )。发送方计算机使用某公式计算出被传送数据所含信息的一个值,并将此值 附在被传送数据后,接收方计算机则对同一数据进行 相同的计算,应该得到相同的结果。如果这两个 CRC结果不一致,则说明发送中出现了差错,接收方计算机可要求发送方计算机重新发送该数据。

CRC循环冗余计算示例:

首先先要确定多项式公式,根据客户或者研发提供的研发提供的,如G(X) = X4 + X + 1,由此可以算出多项式二进制序列为:10011(二进制的总位数是多项式公式X最高次幂加1),因为X3,X2在多项式中不存在,可以当中0处理,故多项式整个公式可以这么写:G(X) = X4 + 0(X3) + 0(X2) + X + 1。

因为CRC校验位为4位,假设现在有一组24BIT原始数据是8C 6C AE,我们通过CRC校验去算有效数据的CRC和抓取的CRC是不是一致的(因为CRC为4位,则原始数据的E(最低4位)为CRC数)有效数据为08 C6 CA,去掉CRC位后,整个数据右移4位,故就可以通过网页设置,计算出来校验结果,与抓取到的CRC一致

也可以通过手动计算算出CRC的值:

把原始数据8C 6C AE的校验位E改为0,即8C 6C A0,转换成24位二进制:

1000 1100 0110 1100 1010 0000

把该24位二进制除以多项式二进制(10011),得到余数(4位二进制)即CRC数

剩下4位为CRC的数据,和网页上计算的一样

相关推荐
Rabitebla6 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖10 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
YLCHUP14 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
旖旎夜光16 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
星恒随风1 天前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
2603_969694851 天前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea1 天前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
Go Work1 天前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
Oll Correct1 天前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator
每月一号准时摆烂2 天前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记