Мое воспоминание (я раньше делал модемные вещи, когда), когда Kermit обрабатывает биты в каждом байте данных, используя сначала младший бит.
Большинство программных реализаций CRC (возможно, Xmodem)сначала просмотрите младший байт данных.
При просмотре источника библиотеки (скачайте его с http://www.lammertbies.nl/comm/software/index.html), используемого для страницы вычисления CRC, на которую вы ссылаетесь, вы увидите, что XModem использует CRC16-CCITT, полином для которого:
x^16 + x^12 + x^5 + 1 /* the '^' character here represents exponentition, not xor */
Полином представлен битовой картой (обратите внимание, что подразумевается бит 16)
0x1021 == 0001 0000 0010 0001 binary
Реализация Kermit использует:
0x8408 == 1000 0100 0000 1000 binary
, который является тем же растровым изображением, что и XModem, только в обратном порядке.
В текстовом файле, который сопровождает библиотеку, также упоминается следующая разница для Kermit:
Только для CRC-Kermit и CRC-SICK: после всей обработки ввода вычисляется дополнение к CRC, и два байта CRC меняются местами.
Так что следуетВероятно, будет легко изменить вашу процедуру CRC, чтобы соответствовать результату ПК.Обратите внимание, что источник в библиотеке CRC, кажется, имеет довольно либеральную лицензию - возможно, имеет смысл использовать его более или менее как есть (по крайней мере, части, которые применяются для вашего приложения).