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; }
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; }