赞
踩
CRC即循环冗余校验(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
CRC校验实用程序库:在数据存储和数据通讯领域,为了保证数据的正确性,就不得不采用检错的手段。
CRC码校验原理:
发送端:发送端根据信息字段与生成多项式生产呢个CRC码,CRC码作为数据发送给接收端,同时也会把计算出的校验字段的数据一同发送(注:目的是如果接受端检测到发送的数据是正确的,接收端能够从CRC码中提取出信息字段的数据)。
接收端:接收到CRC码数据后,检测接收到的数据是否正确,方法:将CRC码数据与生成多项式进行模2除,如果余数为0,则说明接收到的数据是正确的。然后,从CRC码中提取出信息字段的数据。
实现方法:
1、发送端生成CRC码方法:
CRC码是由两部分组成的,前部分是信息字段,就是需要校验的信息,后部分是校验字段,如果CRC码共长n个bit,信息字段长k个bit,就称为(n,k)码。它的编码规则是:
首先将信息字段值(k bit)左移r位(k+r=n)
运用一个生成多项式g(x) (也可看成二进制数) 模2除上面的式子,得到的余数就是校验字段值。
生成的CRC码值为:信息字段值+校验字段值(单位:位bit,次序:高位到低位),例如字段值为1001,校验字段值为110,则CRC码为1001110
2、接收端验证过程:略;
CRC32校验算法-C实现:> 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
/***************************************************** ** Name : crc32.c ** Description : CRC32 Checking ******************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #define BUFSIZE 1024*4 static unsigned int crc_table[256]; const static char * program_name = "crc32"; static void usage(void); static
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。