Расчет CRC-CCITT (Kermit) на двух разных сайтах дает разные результаты

Я играл с CRC-CCITT (Kermit) и заметил, что при вычислении контрольной суммы на разных сайтах я получал разные результаты.

На lammertbies.nl/comm/info/crc-calculation.html результатом 123456789 был 0x8921, а на crccalc.com - 0x2189.

Фактически, какое бы значение вы ни вводили, результат в crccalc такой же, как у lammertbies, но с двумя последними символами первыми. Итак, foobar на lammertbies - это 0xF4E3, а на crccalc - 0xE3F4.

Какой сайт правильный, а что другой сайт делает неправильно?


person Josey    schedule 05.08.2018    source источник


Ответы (1)


Это проблема с прямым порядком байтов по сравнению с прямым порядком байтов в сообщаемом значении CRC.

Вы можете проверить большинство реализаций CRC, добавив CRC к строке и проверив добавленную строку на CRC == 0. Вернитесь на оба веб-сайта калькулятора CRC, измените ввод на шестнадцатеричный, введите шестнадцатеричную строку

"3132333435363738398921"

и CRC Kermit будет 0000, поэтому CRC, добавленный к строке, будет 0x89, 0x21.

person rcgldr    schedule 05.08.2018
comment
Ого, спасибо! Я этого не знал. Есть ли способ использовать тот же метод для проверки результата CRC, который содержит буквы (например, результат foobar 0xF4E3)? - person Josey; 05.08.2018
comment
@Josey - да, просто введите значения ascii в шестнадцатеричном формате, а затем CRC, в случае использования foobar: 666F6F626172F4E3. - person rcgldr; 05.08.2018
comment
Спасибо! Я пробовал это, и это не сработало, но теперь оно работает, так что я, должно быть, сделал что-то не так. - person Josey; 05.08.2018