www.dbpj.net > CrC16校验C语言查表

CrC16校验C语言查表

#include <stdio.h> typedef unsigned short ushort; typedef unsigned char uchar; typedef union _CRC { ushort crc16; uchar by[2]; } CRC;//输入不带CRC码的数据时,返回值是CRC码//输入带CRC码的数据时,则可以进行校验,返回0时CRC校验成

1)将上次计算出的CRC校验码右移一个字节;(2)将移出的这个字节与新的要校验的字节进行XOR 运算;(3)用运算出的值在预先生成码表中进行索引,获取对应的值(称为余式);(4)用获取的值与第(1)步右移后的值进行XOR 运算;(5)如果要校验的数据已经处理完,则第(4)步的结果就是最终的CRC校验码.如果还有数据 要进行处理,则再转到第(1)步运行.CRC32=CRC_32_Tbl[(CRC32^((unsigned__int8*)p)[i])&0xff]^(CRC32>>8); 怎么样?简单吧.

unsigned int mc_crc16(unsigned char *dabuf,unsigned char len)//crc16校验 { bit bitfg; unsigned char idata i,j; unsigned char bitemp=0; unsigned int idata crcbuf = 0xffff; for(j=0;j<len;j++) { crcbuf ^= dabuf[j]; for(i=0;i<8;i++) { bitfg = crcbuf&1; crcbuf >>

unsigned short crc_dsp(unsigned short reg, unsigned char data_crc) //reg为crc寄存器, data_crc为将要处理的8bit数据流 { unsigned short msb; //crc寄存器将移出的最高1bit unsigned short data; unsigned short gx = 0x8005, i = 0; //i为左移次数,

int cal_crc(unsigned char *ptr, unsigned char len) { unsigned char i; unsigned int crc_value =0; while(len--) { for(i=0x80; i!=0; i>>=1 ) { if (crc_value&0x8000) crc_value = (crc_value else crc_value = crc_value if(*ptr&i) 另外,站长团上有产品团购,便宜有保证

基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码.对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x).根据G(x)可以生成K位信息的校验码,而G(x)叫做这个

unsigned short crc16table[]= {0x0000,0xc0c1,0xc181,0x0140,0xc301,0x03c0,0x0280,0xc241,0xc601,0x06c0,0x0780,0xc741,0x0500,0xc5c1,0xc481,0x0440,0xcc01,0x0cc0,0x0d80,0xcd41,0x0f00,0xcfc1,0xce81,0x0e40,0x0a00,0xcac1,0xcb81,0x0

static void Main(string[] args) { int i = CRC16("2200000C20140730111000000038465E4DA6F447D4992B0ABDD343CC110C02000105000703102015073000000000", "2200000C20140730111000000038465E4DA6F447D4992B0

基于位运算的算法是非常慢的而且效率很低.因此,在实际使用中不推荐使用“计算法”来生成CRC校验码,而建议使用“查表法”来进行CRC校验码计算.半查表法既计算又查表,表占用空间小,适合小文件或者数据包校验;全查表法是标准查表法;双8位表全查表法表量大,查询方便,适合大文件校验.因此,如果你的磁盘文件体积一般,建议使用全查表法,如果比较大如安装包,建议使用双8位表全查表法.

//函数功能:计算CRC16//参数1:*pData 16位CRC校验数据,//参数2:nLength 数据流长度//参数3:init 初始化值//参数4:ptable 16位CRC查找表//逆序CRC计算unsigned short GetRevCrc_16(unsigned char * pData, int nLength, unsigned short init,

网站地图

All rights reserved Powered by www.dbpj.net

copyright ©right 2010-2021。
www.dbpj.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com