У меня проблема с CRC. Мое сообщение в шестнадцатеричном виде: 80 00 00 03 CRC является f5 1f. Я думал, полином является 0x1021 (кермит crc-ccitt). Как узнать, какой полином правильный? И как я могу увидеть, если мне нужно, чтобы это было в обратном порядке и если начальное значение 0xffff или 0x0000 или что-то еще? Как я могу вычислить искомый полином? Должен ли я конвертировать 80 00 00 03 и f5 f1 в БИН, а затем разделить оба?
Я пытался прикрыться прогой reveng, но это не было успешным. Может быть, потому что у меня есть не все параметры -.-
Я нашел php-функцию ВОТ
но это не будет рассчитывать правильную сумму для меня. Может быть, это не CRC-CCITT KERMIT в этой php-функции
0x1ff5
действительно является CRC-CCITT (Kermit) 80 00 00 03
, (По-видимому, он хранится в порядке с прямым порядком байтов в вашем потоке.)
PHP-код, который вы нашли, предназначен для ложный «CRC-CCITT», который вы можете найти в каталоге RevEng Вот.
правда Параметры CRC-CCITT (Kermit) здесь, в этом каталоге. Биты инвертированы, поэтому вы используете инвертированный полином, 0x8408
и вы сдвигаете биты вниз, а не вверх. Начальное содержимое регистра равно нулю, и нет окончательного исключающего-или.
Других решений пока нет …