Комментарии 2
0) где доказательство что это вообще правильно? тесты?
1) где доказательство, что это "быстро"?
2) сравнение с modbus-crc или https://pypi.org/project/crc/ или https://fastcrc.readthedocs.io/en/latest/ ?
Это работает в протоколе Меркурий, соответствует алгоритмам производителя. В принципе, если применять в чем-то другом, то можно и посравнивать остальное. Здесь же достаточно того, что это работает как ожидается.
Если сравнить "влоб" с алгоритмом в статье https://habr.com/ru/articles/418209/ , то на некоторых последовательностях результат не тот, что ожидается:
Result crc16fast: [34, 17, 113, 181, 160, 255, 200]
Result crc16full: [34, 17, 113, 181, 160, 195, 191, 200]
Result crc16fast: [1, 0, 36, 176, 1, 237, 203]
Result crc16full: [1, 0, 36, 176, 1, 237, 203, 0, 0]
Result crc16fast: [113, 170, 0, 24, 36, 115, 200]
Result crc16full: [113, 170, 0, 24, 36, 115, 200]
Быстрый расчет CRC c полиномом MODBUS на языке Python