您现在的位置是:首页» windows系统» crc8和crc16算法如何选择,crc6算法

crc8和crc16算法如何选择,crc6算法

2023-12-05 05:14:54
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家! 为了提高编码效率,在实际运用中大多采用查表法来完成CRC-32校验,下面是产生CRC-32校验吗的子程序。unsigned long crc_32_tab[256]={0x000000

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

为了提高编码效率,在实际运用中大多采用查表法来完成CRC-32校验,下面是产生CRC-32校验吗的子程序。

unsigned long crc_32_tab[256]={

0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,0x0edb8832,…, 0x5a05df1b, 0x2d02ef8d

};//事先计算出的参数表,共有256项,未全部列出。

unsigned long GenerateCRC32(char xdata* DataBuf,unsigned long len)

oldcrc32= 0x00000000;//初值为0

t=(oldcrc32>> 24)& 0xFF;//要移出的字节的值

oldcrc=crc_32_tab[t];//根据移出的字节的值查表

c=DataBuf[charcnt];//新移进来的字节值

oldcrc32=(oldcrc32<< 8)| c;//将新移进来的字节值添在寄存器末字节中

oldcrc32=oldcrc32^oldcrc;//将寄存器与查出的值进行xor运算

参数表可以先在PC机上算出来,也可在程序初始化时完成。下面是用于计算参数表的c语言子程序,在Visual C++ 6.0下编译通过。

unsigned long int crc32_table[256];

unsigned long int ulPolynomial= 0x04c11db7;

unsigned long int Reflect(unsigned long int ref, char ch)

//交换bit0和bit7,bit1和bit6,类推

for(int i= 1; i<(ch+ 1); i++)

for(int i= 0; i<= 0xFF; i++)

crc32_table[i]= temp<< 24;

unsigned long int flag=crc32_table[i]&0x80000000;

t1=(crc32_table[i]<< 1);

crc32_table[i]= Reflect(crc32_table[i], 32);

wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com

标签: 算法 crc