被crc32搞晕了,求各位大虾指点
这两天饱受crc32的折磨。。。。。。
各位大虾帮帮忙啊!俺在此谢了先
我是要做通信协议中的crc32,数据是从低位开始发送的
1。这个表
{0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
..........
}
中的数据是低位在前还是高位在前哦?
某论坛上的一位大虾推荐看这篇英文文章http://www.repairfaq.org/filipg/LINK/F_crc_v31.html
我仔仔细细的看了,除了最后莫名其妙的就变成
r=0;
while (len--)
r = (r<<8) ^ t[(r >> 24) ^ *++];
这个之外,其余的我觉得都差不多懂了,但是我按照他的算法算出来的结果和标准提供的结果不一样,呜呜!
那上面说代入数据123456789,得到的结果是CBF43926!
2。我c/c++基础差,网上的程序基本上都只有算crc32的子函数,而且函数的形参都是一个指向字符数组的指针和数组的长度,数据是一个字节一个字节的算的,算完一个就把指针加一,移到下移个字节。如果,我要想传int整数,该咋办呢?如果定义成int数组,指针加一就移动了4个字节.
3。如果编出来一个计算crc32值的程序,怎样知道算出的crc32值是否正确?
唉!真是郁闷!