Перейти к содержимому

Терминатор (QR)

Терминатор — последовательность до четырёх нулевых бит (0000) после закодированных данных QR, отмечающая конец потока; за ней идёт выравнивание до байта и заполняющие байты.

Что такое терминатор

Терминатор — короткая метка конца данных в потоке битов QR-кода. Это последовательность нулей, до четырёх бит 0000, которую кодер добавляет сразу за закодированным сообщением. Смысл простой: сказать декодеру, где заканчиваются осмысленные данные и дальше начинается служебная набивка. Без такого признака сканер не отличил бы полезные биты от заполнителей.

Как работает

После того как все режимы кодирования отработали и данные уложены в поток, кодер дописывает терминатор — обычно четыре нулевых бита. Есть нюанс: если сообщение почти заполнило ёмкость версии и до конца области данных остаётся меньше четырёх бит, терминатор укорачивается ровно до оставшегося места или опускается вовсе. То есть 0000 — это максимум, а не жёсткая длина. Терминатор не образует отдельный режим и не кодирует данные, он лишь закрывает поток.

Что идёт после терминатора

Дальше поток выравнивается: если после терминатора длина не кратна восьми, добавляются нули до границы целого байта. Затем, если до конца области данных ещё есть место, идут заполняющие байты 0xEC и 0x11. И только за всей этой областью данных считаются проверочные байты коррекции. При чтении декодер, встретив терминатор, прекращает разбор данных — остальное для него шум. Собрать код и увидеть структуру потока можно в генераторе QR.