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

相关推荐
闪闪发亮的小星星2 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq2 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
阿米亚波2 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
自传.2 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding
.千余2 天前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
自传.2 天前
尚硅谷 Vibe Coding|第二章 AI编程工具生态 学习笔记
笔记·学习·ai编程·尚硅谷·vibe coding
秋波。未央2 天前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习
中屹指纹浏览器2 天前
2026指纹浏览器字体指纹、字体渲染偏差检测与全维度虚拟字体池搭建方案
经验分享·笔记
影寂ldy2 天前
WinForm PictureBox控件 + ImageList组件 完整笔记
开发语言·笔记·swift