qt crc校验学习笔记
crc校验,官方一大堆看不懂的数据文字多项式,我大白话说一说,
前置知识:需要被校验的数据M(x) 约定的生成多项式G(x) M(x)%G(x)的值就是crc值(即校验位) 其中x=2(二进制)
正题:
循环冗余校验码由信息码n位和校验码k位构成。k位校验位拼接在n位数据位后面,n+k为循环冗余校验码的字长,又称这个校验码(n+k,n)码
n位信息位可以表示成为一个报文多项式M(x),最高幂次是x^(n-1)(n位二进制)。约定的生成多项式G(x)是一个k+1位的二进制数,因为最高幂次是x^k。将M(x)乘以x^k,即左移k位后,除以G(x),得到的k位余数就是校验位
扩展:
实际的CRC校验码生成是采用二进制的模2算法(即减法不借位、加法不进位)计算出来的,这是一种异或操作。
常见crc参数
//NAME (模型名字)
//WIDTH (生成的crc数据位宽度) 16
//POLY ibm(POLYNOMIAL_IBM,0x1021) ccitt(POLYNOMIAL_IBM,0x8005)
//REFIN (原始数据是否翻转) false
//REFOUT (计算好crc之后是否进行翻转) ibm(false) ccitt(true)
//XOROUT (计算crc值与此参数进行亦或之后才输出) ibm(POLYNOMIAL_IBM,0x1021) ccitt(POLYNOMIAL_IBM,0x8005)
//INIT (CRC初始值) ibm(CRC_IBM_SEED,0xFFFF) ccitt(CRC_CCITT_SEED,0x1D0F)
注意 与1 异或(xor)取反 与0 异或(xor)还是本身
计算 http://www.ip33.com/crc.html
参考 https://cloud.tencent.com/developer/article/1704685
程序代码和测试 demo
https://blog.csdn.net/whik1194/article/details/108837333
//
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构