Выяснение алгоритма контрольной суммы - PullRequest
0 голосов
/ 03 июня 2019

Я копаюсь в алгоритме контрольной суммы, и у меня есть большая его часть, но последний байт ускользает от меня.

У нас есть последовательности байтов, например:

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, а также различные формы добавления, сдвига и так далее, без радости.

...