Я копаюсь в алгоритме контрольной суммы, и у меня есть большая его часть, но последний байт ускользает от меня.
У нас есть последовательности байтов, например:
F5 21 60 80 00 00 00 AA
E5 04 70 80 00 00 00 AA
D5 F8 80 80 00 00 00 AA
Другая последовательность:
55 FF 00 80 00 00 00 AA
55 B7 00 80 91 22 87 70
55 31 80 80 00 00 84 A6
55 F9 80 80 0A 7E 82 20
Первый байт (слева) прост, это обратная сумма 3-го байта слева и 4 байтов после 0x80 (раздел данных) и 0xFF. То есть, если мы посмотрим на последнюю строку во второй последовательности:
~(80 + 0A + 7E + 82 + 20) & 0xFF == 0x55
Я застрял в том, что алгоритм возвращает нам значение во втором байте слева (0xF9 в данном случае). Это явно зависит от раздела данных, но в каком способе я пока не уверен.
Я пробовал XOR'ing, а также различные формы добавления, сдвига и так далее, без радости.