Chinaunix首页 | 论坛 | 博客
  • 博客访问: 252053
  • 博文数量: 52
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-03 08:39
文章分类
文章存档

2011年(4)

2010年(5)

2009年(6)

2008年(37)

我的朋友

分类: C/C++

2008-06-06 10:39:30

unsigned short checksum(unsigned short *buffer,int size) //校验和的求法
{
  unsigned long cksum=0;
  while(size>0) //各位求和
  {
    cksum+=*buffer++;
    size-=sizeof(unsigned short);
  }
  if(size)
  cksum+=*(unsigned char *)buffer;
  cksum=(cksum>>16)+(cksum & 0xffff); //移位,位与运算
  cksum+=(cksum>>16);
  return (unsigned short)(~cksum); //再取反
}

阅读(1845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~