Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162518
  • 博文数量: 24
  • 博客积分: 1205
  • 博客等级: 少尉
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-21 13:41
个人简介

codeqq的ChinaUnix博客

文章分类

全部博文(24)

文章存档

2012年(1)

2011年(1)

2010年(4)

2009年(18)

我的朋友

分类: 系统运维

2009-11-21 14:25:53

unsigned short check_sum(unsigned short *addr,int len)
{
    register int nleft=len;
    register int sum=0;
    register short *w=addr;
    short answer=0;
    while(nleft>1)
    {
        sum+=*w++;
        nleft-=2;
    }
    if(nleft==1)
    {
        *(unsigned char *)(&answer)=*(unsigned char *)w;
        sum+=answer;
    }
    sum=(sum>>16)+(sum&0xffff);
    sum+=(sum>>16);
    answer=~sum;
    return(answer);
}

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