Как мне реализовать CRC16 с пользовательским полиномом в Javascript?
Фон
Мне нужно реализовать CRC16 с пользовательским полиномом в Javascript.
Исследование
После поиска нескольких модулей NPM и этого SO вопроса (а также всех ссылок, которые предлагают комментарии):
Я все еще не ближе к своей цели.
проблема
Моя проблема в том, что, хотя у меня есть код, я не могу понять, как повторно использовать данное решение CRC16, потому что я не знаю, где найти определение полинома в коде. С учетом всех смен и тому подобного, это слишком загадочно для меня.
Вопрос
Как я могу иметь функцию CRC16 с пользовательским полиномом?
2 ответа
Ответ
Это буквально невозможно.
Насколько я понимаю, используемый полином определяет саму суть самого алгоритма CRC.
Две разные реализации CRC16 с разными функциями в большинстве случаев представляют собой 2 совершенно разных алгоритма.
Моя путаница была создана многими библиотеками, плохо документированными, в которых авторы не упоминают версию реализуемого ими алгоритма CRC16, называя свои модули модулем crc16.
Там нет такой вещи. Вместо этого существует множество алгоритмов CRC16, каждый из которых имеет разные полиномы, которые можно использовать.
Связанный пример имеет таблицу, полученную из полинома CRC. Конечно, вы можете найти код, который генерирует таблицу, учитывая полином. Вы можете найти код, который вычисляет любой CRC, и код, который генерирует код CRC, включая таблицу, с учетом определения CRC (полином, упорядочение битов, начальное значение, конечное значение xor).