Bonjour,
Je dois calculer un CRC avec le polynome utilisé dans HDLC (X^16 + X^12 + X^5 + 1).
J'ai à peu prés compris le principe des CRC mais à chaque fois que je tombe sur un algo, j'ai un peu de mal à le comprendre ...
J'ai trouvé ça comme algo :
unsigned short CalcCRC( unsigned char * message, int l )
{
unsigned short crc = 0xFFFF;
for ( ; l--; )
{
crc ^= * ( message++ );
for ( SHORT j = 8; j--; )
{
if ( crc & 1 )
crc = ( crc >> 1 ) ^ 0xA001;
else
crc >>= 1;
}
}
return( crc );
}
Bon, le polynome utilisé n'est pas le même mais bon.
Y quelqu'un qui peut m'expliquer un peu ça ?