domos a écrit :
Je pense avoir trouvé.
en fait le calcul :
( 255 - ((((a + b + c + d) / 256) - Int((a + b + c + d) / 256)) * 256)) + 1 |
revient à
( 255 - ((a+b+c+d) modulo 256) ) + 1 |
ce qui devrai être + simple à coder votre avis ?
|
C'est mieux. Effectivement, le checksum 8 bits c'est bien la somme modulo 256. Pour le complément à deux, on fait + 1 et on inverse les bits.
unsigned checksum_abcd = (~(((a + b + c + d) & ((1 << 8) - 1)) + 1)) & ((1 << 8) - 1); |
(corrigé, merci 'mcjoedassin')
Message édité par Emmanuel Delahaye le 20-08-2005 à 01:01:26
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/