Я использую плохо документированную систему, в которой требуется CRC16 в структуре, которую мне нужно изменить. Изменение не вступит в силу, если я не укажу правильную контрольную сумму.
Техническая поддержка указала, что они использовали стандартный CRC16, но использование CRC16 CCITT не дало бы мне результата.
У меня есть небольшой фрагмент данных и контрольная сумма, которая должна быть.
Может ли кто-нибудь помочь мне найти правильные параметры CRC16 (многочлен, начальное значение), которые будут соответствовать моему набору данных?
Еще одна вещь. На рассматриваемой платформе адреса организованы с 16-битными словами для каждого адреса, поэтому я попробовал как исходный порядок байтов, так и обратный порядок байтов.
Data Set # 1
crc 0xb19f
data @b306: 7a b1 74 44 9f 84 74 5b
length 8 bytes
Data Set # 2
crc 0x447b
data @0036 00 43 e2 05 5b 03 00 02 00 16 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 c0 00 00 00 07 f7 ff 3f e5 ff ff 3f ff 75 30
3a 98 00 01 00 9d 00 0f 00 09 00 0a 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 0a 80 0f
47 44 09 6d 0a 35 09 c4 f0 00 00 40 10 00 00 01
07 d0 27 10 00 00 ff 38 00 5a ff 06 0a fd 00 05
length 128 bytes
Зная то, что я знаю сейчас, я думаю, что ошибся, когда выбрал организацию, которая не предоставляет много технической поддержки, теперь я это знаю.
[EDIT:] Процессор ~ 8051, но не уверен насчет порядка байтов. Мой тестовый код проверяет оба типа порядка следования байтов, как само собой разумеющееся.
[EDIT:] Я нашел этот другой вопрос полезным: CRC16 и передача данных