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的数据,和网页上计算的一样

相关推荐
百里香酚兰16 小时前
【python学习笔记】pyttsx3库疑似只播报一次语音
笔记·python·学习
chnyi6_ya19 小时前
论文阅读笔记:VideoWeaver — 面向智能体长视频生成的技能评估与进化
论文阅读·笔记·音视频
J_yyy19 小时前
基于Reactor的文件管理服务开发笔记
c++·笔记·reactor·多线程编程·muduo
浩瀚地学19 小时前
【Java基础复习】IO流(四)
java·开发语言·经验分享·笔记·学习
疯狂打码的少年19 小时前
【操作系统】板块总结 + 下期预告(软件工程)
笔记·软件工程
咸甜适中20 小时前
rust语言学习笔记——Tokio库(异步编程)
笔记·学习·rust·tokio
YUS云生20 小时前
Python学习笔记·第29天:Git进阶——分支操作与合并冲突
笔记·python·学习
xiaoyuchidayuma20 小时前
已知 ud、uq 求解三相相电压并计算调制比
笔记·学习
B8017913Y21 小时前
上课记笔记写不完不会整理?2026学习笔记生成使用场景该怎么选
人工智能·笔记·学习
_muffinman1 天前
梁山派学习笔记1
笔记·学习