Complement à 1 sur un buffer
Publié : sam. 08/avr./2006 18:26
Bonjour à tous,
je voudrais calculer le complement à 1 d'un bufffer de données sur 16bit.
C'est en fait la somme de controle d'un paquet IP. J'ai bien une procédure en C mais j'avoue que j'ai du mal à la convertir...
je voudrais calculer le complement à 1 d'un bufffer de données sur 16bit.
C'est en fait la somme de controle d'un paquet IP. J'ai bien une procédure en C mais j'avoue que j'ai du mal à la convertir...
Code : Tout sélectionner
unsigned short
checksum(unsigned short *buffer, int size)
{
unsigned long cksum = 0;
while (size >1){
cksum += *buffer++;
size -= sizeof(unsigned short);
}
if (size) {
cksum += *(unsigned char *)buffer;
}
cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >> 16);
return (unsigned short)(~cksum);
}