Qraft

终止符

终止符 (Terminator,也称终止图案) 是 QR 码编码过程中附加在数据比特流末尾、最多 4 位的 0 序列 (0000)。它向解码器表明「有效数据到此结束」,由国际标准 ISO/IEC 18004 规定。

在什么时候、什么位置插入?

插入的时机是输入数据按编码模式转换为比特流之后、切分为 8 位码字之前。顺序为:模式指示符、字符计数指示符、数据本体,然后是终止符。如果比特流仍未对齐到 8 位边界,则补 0,剩余容量再用规定的填充码字(11101100 和 00010001 交替)填满。纠错码字的计算就是针对这个填充完毕的比特流进行的。

会比 4 位短吗?

会。标准规定终止符「最多 4 位」:当数据几乎占满符号容量时,终止符会缩短为剩余的位数;完全没有空余时则整个省略。由于数据的结束位置也能从码字数推算出来,缩短或省略不影响解码。微型二维码的规定长度不同:版本 M1 为 3 位、M2 为 5 位、M3 为 7 位、M4 为 9 位的 0。

剩余位有什么区别?

两者都是填 0 的机制,但作用层面不同。终止符是编码阶段插入比特流的「数据结束标记」,位于纠错计算之前。剩余位则出现在最后阶段:所有码字都作为模块排列完毕后,填补数据区域中不足 8 个模块的零散空缺。详见词条「剩余位」。