[an error occurred while processing this directive]
|
Кстати нашел еще один алгоритм:
// Update the CRC for transmitted and received data using
// the CCITT 16bit algorithm (X^16 + X^12 + X^5 + 1).
unsigned char ser_data;
static unsigned int crc;
crc = (unsigned char)(crc >> 8) | (crc << 8);
crc ^= ser_data;
crc ^= (unsigned char)(crc & 0xff) >> 4;
crc ^= (crc << 8) << 4;
crc ^= ((crc & 0xff) << 4) << 1;
Результат такой же как в алгоритме от SM, хотя сдвиги и ксоры выбраны немного по другому, видимо оба алгоритма инициализируются неправильно.
И как все же исходя из полинома дойти то набора сдвигов и ксоров?
Я даже не могу сравнить правильно ли я выбираю сдвиги и ксоры, так как в лоб и не влоб результаты разные выходят.