Калькулятор контрольной суммы SUM/XOR/LRC

Вычисляйте SUM-8, SUM-16, XOR-8 и LRC-8 для HEX-байтов или текста UTF-8.

Все вычисления выполняются в браузере. Данные не отправляются на сервер.

Формат ввода

Введите сплошную HEX-строку или группы полных байтов через пробел, запятую или точку с запятой. Допускается префикс 0x. Максимальный размер: 64 КиБ.

Контрольные суммы

Ввод: 4 байт

Предпросмотр байтов (HEX)

01 02 03 04

SUM-8

Сложение байтов с сохранением младших 8 бит.

HEX
0x0A
Десятичное
10
Двоичное
00001010

SUM-16

Сложение байтов с сохранением младших 16 бит.

HEX
0x000A
Десятичное
10
Двоичное
0000000000001010

XOR-8

XOR всех байтов, начиная с 0.

HEX
0x04
Десятичное
4
Двоичное
00000100

LRC-8

Дополнительный код SUM-8: (256 − SUM-8) mod 256.

HEX
0xF6
Десятичное
246
Двоичное
11110110

LRC-8 использует дополнительный код суммы по Modbus ASCII. Вычисление выполняется только для введённых байтов; заголовки и окончания кадров автоматически не удаляются.

Как вычислить контрольную сумму

Выберите HEX-байты или текст UTF-8 и введите данные. Все четыре результата обновляются автоматически. HEX принимает 01020304, 01 02 03 04 или 0x01, 0x02. Полубайты, знаки минуса, двоеточия и полные кадры Modbus ASCII не принимаются. Смена формата заново интерпретирует содержимое, не преобразуя его.

Различия алгоритмов

  • SUM-8: сумма значений байтов по модулю 256.
  • SUM-16: сумма отдельных байтов по модулю 65536. Байты не объединяются в 16-битные слова; это не контрольная сумма Internet checksum.
  • XOR-8: XOR всех байтов, начиная с нуля. В некоторых протоколах это называется BCC; сверяйтесь с документацией устройства.
  • LRC-8: дополнительный код SUM-8 по определению Modbus ASCII. В других протоколах LRC может означать другой алгоритм.

Для HEX 01 02 03 04:

SUM-8 SUM-16 XOR-8 LRC-8
0x0A 0x000A 0x04 0xF6

Пример LRC Modbus ASCII

Для примера 01 03 00 00 00 0A результат LRC-8 равен 0xF2. Это шесть HEX-байтов, а не коды UTF-8 шестнадцатеричных символов.

Для генерации LRC вводите только адрес, функцию и данные. Исключите начальное двоеточие, существующий LRC и CR/LF. После добавления F2 получается :01030000000AF2, затем CR/LF. См. Modbus Serial Line Guide, §6.2.1.

Для проверки существующего LRC введите данные вместе с LRC в режиме HEX: 01 03 00 00 00 0A F2. SUM-8 должна быть 0x00. Это проверяет соотношение суммы, а не полную структуру кадра.

Почему текст и HEX дают разные результаты?

Текст 01 кодируется байтами UTF-8 30 31, а HEX 01 — это один байт. Пробелы и переносы строк учитываются в текстовом режиме; символы вне ASCII могут занимать несколько байтов. Проверяйте предпросмотр. Лимит — 64 КиБ. Показаны первые 32 байта, но расчёт использует все данные.

Эти суммы обнаруживают некоторые ошибки передачи, но не защищают от намеренного изменения данных. Для CRC, MD5 или SHA используйте инструменты по ссылкам на этой странице.