Я нахожусь в процессе написания статьи во время обучения по внедрению CRC в Excel с VBA.
Я создал довольно простой модульный алгоритм, который использует параметризованную модель Росса .
Он работает безупречно для любого полинома длины и любой комбинации параметров, кроме одного; когда длина входных данных короче ширины полинома и , выбирается начальное значение («INIT»), для которого установлены любые биты, которые «превосходят» длину входных данных.
Пример:
Input Data: 0x4C
Poly: 0x1021
Xorout: 0x0000
Refin: False
Refout: False
Если я не выберу INIT или любой INIT, например 0x ## 00, я получу ту же контрольную сумму, что и любой из онлайн-генераторов CRC. Если какой-либо бит из последних двух шестнадцатеричных символов установлен - например, 0x0001 - мой результат недействителен.
Я полагаю, что вопрос сводится к «Как инициализируется регистр, если для двухбайтового параметра INIT присутствует только один байт входных данных?»