CRC16实际中已经应用的另一个算法

u16 calc_sum(void *data, u32 len){
    u32 cksum=0;
    while (len > 1)
    {
        cksum += *p++;
        len -= 2;
    }
    if (len)
    {
        cksum += *(u8*)p;
    }
    cksum = (cksum >> 16) + (cksum & 0xFFFF);
    cksum += (cksum >> 16);
    return ~cksum;
}

 

posted @ 2013-04-25 10:48  littlestone08  阅读(98)  评论(0)    收藏  举报