- 注册时间
- 2005-8-2
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2007-8-28 17:56:21
|
显示全部楼层
找到了,这个算法算出来的结果和lavax的一样
int crc_ta[16]={ /* CRC余式表 */
0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef
};
int cal_crc(long ptr,int len) {
int crc;
char da;
crc=0;
while(len--!=0) {
da=((crc/256)&0xff)/16; /* 暂存CRC的高四位 */
crc=crc<<4; /* CRC右移4位,相当于取CRC的低12位)*/
crc=crc^crc_ta[da^(*ptr/16)]; /* CRC的高4位和本字节的前半字节相加后查表计算CRC,
然后加上上一次CRC的余数 */
da=((crc/256)&0xff)/16; /* 暂存CRC的高4位 */
crc=crc<<4; /* CRC右移4位, 相当于CRC的低12位) */
crc=crc^crc_ta[da^(*ptr&0x0f)]; /* CRC的高4位和本字节的后半字节相加后查表计算CRC,
然后再加上上一次CRC的余数 */
ptr++;
}
return(crc);
} |
|