/* *By Neil Chiao ( [email=neilchiao@163.com]neilchiao at gmail.com[/email] ) *转载请注明出处: neilengineer.cublog.cn */ crc(Cyclic Redundancy Code)中文是“冗余校验码”的意思。crc32则表示会产生一个32bit(8位十六进制数)的校验值。由于crc32产生校验值时源数据块的每一个bit(位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的crc32值。 crc32表示使用32位来保存错误检查信息...
by neilengineer - Linux文档专区 - 2009-03-28 10:53:08 阅读(1220) 回复(0)
Preface 基于不重造轮子的原则,本文尽量不涉及网络上遍地都是的资料。 What's crc ? 简而言之,crc是一个数值。该数值被用于校验数据的正确性。crc数值简单地说就是通过让你需要做 处理的数据除以一个常数而得到的余数。当你得到这个数值后你可以将这个数值附加到你的数据后, 当数据被传送到其他地方后,取出原始数据(可能在传送过程中被破坏)与附加的crc数值,然后将这里 的原始数据除以之前那个常数(约定好的)然后得到新的crc值...
crc_32(long crc,char c ) { int data=(unsigned long )c; 1: crc = (crc >> 8) ^ crc_tab32[ (crc^data) & 0xFF ]; 2: crc = ((crc << 8) | data) ^ crc_tab32[(crc >> 24) & 0xFF]; } 请问下算法1与算法2有啥不同,我在网上找的大多是算法2的资料
当计算好crc32数据后,加在ethernet frame后面,当接受时,验证带crc32的数据的正确性时,计算crc32, 这时的 crc32的magic value是多少呢?
我“抄”了一段生成 crc32 校验码的代码,如下:(crc32_TABLE,是 crc32的参数表) 现在我对字符串 "ilovethisgame!" 得到的校验码为 6eebcdb6,这个结果是否正确?请指教。 [code]unsigned long Createcrc32(char * databuf,unsigned long len) { unsigned long oldcrc32,crc32,oldcrc; unsigned int charcnt; char c; unsigned long t; oldcrc32 = 0x00000000; charcnt = 0; while(len --) { t = ( oldcrc32 >;>; ...
crc算法经常用到,如下总结了常用的三种。有兴趣的copy回家用。 呵呵 crc16算法和代码如下 [code] unsigned short crc16(char *data_p, unsigned short length) { unsigned char i; unsigned int data; unsigned int crc = 0xffff; if (length == 0) return (~crc); do { for (i=0, data=(unsigned int)0xff & *data_p++; i < 8; ...
从百度tieba得到了crc16的perl脚本,不是很清楚原理,有大侠可以解释一下吗?我想改为crc32的功能,但是crc多项式要可以配置,比如通过poly引用,不知道应该如何修改?? sub crc16{ my $init = shift; my $poly = shift; my $val = shift; die "undefined crc value" unless defined $val && defined $poly && defined $init; my $var; for (my $i=0; $i<8; $i++) { $var = $val << 8; $var ^= $init; $init += $...
代码如下,为何我这段代码计算出的来的文件crc32 跟别人工具计算出来的不一样呢? 别人算出来都是8位的,我的是10位...请教下错在哪里.... from ctypes import * import zlib def getFilecrc(_path): try: blocksize = 1024 * 64 f = open(_path,"rb")  ...