1 / 33
文档名称:

CRC源码.doc

格式:doc   大小:66KB   页数:33页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

CRC源码.doc

上传人:文库旗舰店 2019/11/8 文件大小:66 KB

下载得到文件列表

CRC源码.doc

文档介绍

文档介绍:CRC-16/CRC-32程序代码不久前写一程序时要用到CRC-16,但找来找去只在UDDF里找到一个Delphi的CRC-32程序代码,而且是用查表法,虽然说查表法速度快,但256项32位数据我怀疑可能会有输入错误,让人不是那么放心,而我又不知道这个表是怎么算出来的。后来我又在一本两年前的笔记本里找到一段关于CRC的内容,也不知是从哪里抄来的,还好里面有一段程序代码,是CRC-16的,这段程序正是产生CRC表的,可是这区区几行的程序(基本上与下面的BuilderTable16函数相同)看得我一头雾水,直到这两天才弄明白,并据此推出CRC-32的算法,现将全部程序列在下面,并作一些说明以助于理解,不但要知其然,还要知其所以然嘛:补充:为了使这段程序更加实用,我将其整理为几个单元,分别用于Delphi和C++Builder。包括对数据流TMemoryStream和字符串的处理。可以在此下载:。-01//注意:因最高位一定为“1”,CRC_16=0x8005;//CRC-16=X16+X15+X2+ITT=0x1021;//ITT=X16+X12+X5+X0,CRC_32=0x04C10DB7;//CRC-32=X32+X26+X23+X22+X16+X11+X10+X8+X7+X5+X4+X2+X1+X0unsignedlongTable_CRC[256];//CRC表//构造16位CRC表voidBuildTable16(unsignedshortaPoly){unsignedshorti,j;unsignedshortnData;um;for(i=0;i<256;i++){nData=(unsignedshort)(i<<8);um=0;for(j=0;j<8;j++){if((nData^um)&0x8000)um=(um<<1)^aPoly;um<<=1;nData<<=1;}Table_CRC[i]=(unsignedlong)um;}}//计算16位CRC值,CRC-ITTunsignedshortCRC_16(unsignedchar*aData,unsignedlongaSize){unsignedlongi;um=0;CRC_16);//ITTfor(i=0;i<aSize;i++)um=(um<<8)^(unsignedshort)Table_CRC[(um>>8)^*aData++];um;}//构造32位CRC表voidBuildTable32(unsignedlongaPoly){unsignedlongi,j;unsignedlongnData;um;for(i=0;i<256;i++){nData=(unsignedlong)(i<<24);um=0;for(j=0;j<8;j++){if((nData^um)&0x80000000)um=(um<<1)^aPoly;um<<=1;nData<<=1;}Table_CRC[i]=um;}}//计算32位CRC-32值unsignedlongCRC_32(unsignedchar*aData,unsignedlongaSize){unsignedlongi;um=0;CRC_32);for(i=0;i<aSize;i++)um=(um<<8)^Table_CRC[(um>>24)^*aData++];um;}说明:CRC的计算原理如下(一个字节的简单例子)110110000000000000000000<-一个字节数据,左移16b^10001000000100001<-ITT多项式,17b--------------------------10100000001000010<-中间余数^10001000000100001-------------------------10100000110001100^10001000000100001-----------------------101000**********^10001000000100001---------------------10101101001010100^10001000000100001-------------------0100101001110101<-16bCRC仿此,可推出两个字节数据计算如下:d为数据,p为项式,a为余数dddddddddddddddd0000000000000000<-数据D(D1,D0,0,0)^ppppppppppppppppp<-多项式P-----------------------------------...aaaaaaaaaaaaaaaa0<-第一次的余数A'(A'1,A'0)^ppppppppppppppppp-

最近更新

2025年最新平行志愿录取规则及填报技巧精选 5页

水泥厂电子皮带秤控制程序的优化设计 2页

二零二五年度智能化实验室改造工程合同 9页

二零二五年度智能包装盒研发生产合作合同 8页

水性漆包线漆合成工艺的探讨与展望(摘要) 2页

人教版五年级上册数学期中测试卷精选 4页

新教科版四年级科学上册期末测试卷带答案(轻巧.. 8页

2025年湖南水利水电职业技术学院单招职业适应.. 64页

2025年湖南水利水电职业技术学院单招职业倾向.. 64页

2025年湖南民族职业学院单招职业适应性考试题.. 63页

二零二五年度智慧社区物业移交与居民需求响应.. 8页

水利水电基础工程设施的施工技术浅淡 2页

人教版四年级上册数学期末测试卷附完整答案【.. 5页

饲料经销合作合同范本 6页

二零二五年度智慧城市基础设施施工合同终止协.. 7页

二零二五年度智慧农业科技员工劳务服务协议 9页

2025年湖南工业职业技术学院单招职业技能测试.. 67页

二零二五年度无房产证房屋买卖及租赁期限约定.. 8页

氧指数——衡量高分子材料可燃性的方法 2页

2022人教版四年级上册数学期中测试卷【精选题.. 4页

2025年湖南外国语职业学院单招职业倾向性测试.. 61页

氧乙炔焰喷涂在修复钻机轴类零件中的应用 2页

2025年湖南劳动人事职业学院单招职业倾向性考.. 65页

2025年湖北艺术职业学院单招职业倾向性考试题.. 66页

2025年湖北国土资源职业学院单招职业适应性考.. 66页

2025年淮南职业技术学院单招职业倾向性测试题.. 64页

乡镇2025安全生产工作情况汇报(通用4篇) 7页

人教版五年级下册数学第三单元试卷 2页

无形资产管理办法 6页

71岁换领驾驶证老年人三力测试题含答案 9页