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