cksum.c,v

来自「TCP-IP红宝书源代码」· C,V 代码 · 共 76 行

C,V
76
字号
head	1.2;
access;
symbols;
locks
	dls:1.2; strict;
comment	@ * @;


1.2
date	94.08.10.18.33.02;	author dls;	state Fix;
branches;
next	1.1;

1.1
date	94.01.07.03.10.11;	author dls;	state Old;
branches;
next	;


desc
@@


1.2
log
@made cksum handle bytes instead of words
@
text
@/* cksum.c - cksum */

/*------------------------------------------------------------------------
 *  cksum  -  Return 16-bit ones complement of 16-bit ones complement sum 
 *------------------------------------------------------------------------
 */
unsigned short
cksum(buf, nbytes)
unsigned short	*buf;
int		nbytes;
{
	unsigned long	sum;
	unsigned short	tmp;
	int		nwords;

	nwords = nbytes / 2;
	for (sum=0; nwords>0; nwords--)
		sum += *buf++;
	if (nbytes & 1) {
		tmp = *(unsigned char *)buf;
		sum += tmp;
	}
	sum = (sum >> 16) + (sum & 0xffff);	/* add in carry   */
	sum += (sum >> 16);			/* maybe one more */
	return (unsigned short)~sum;
}
@


1.1
log
@Initial revision
@
text
@d7 2
a8 1
short cksum(buf, nwords)
d10 1
a10 1
int		nwords;
d13 2
d16 1
d19 4
d25 1
a25 1
	return ~sum;
@

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?