码字
码字 (codeword) 是 QR 码内部结构中数据的基本单元,是固定长度的 8 位(1 字节)块。输入数据按编码模式转换为位流后,每 8 位分割为一个数据码字。然后计算并附加里德-所罗门纠错码字,最终排列为模块图案。
码字总数由 QR 码的版本(尺寸)和纠错等级共同决定。例如,版本 1(21×21 模块)纠错等级 L 共有 26 个码字:19 个数据码字和 7 个纠错码字。版本 40(177×177 模块)等级 L 则达到 3,706 个码字。
理解码字的概念有助于解释为什么提高纠错等级会减少数据容量。码字总数不变,但分配给纠错的比例增大,留给实际数据的码字就减少了。掌握这一机制有助于优化 QR 码尺寸与数据量之间的平衡。
数据码字与纠错码字有什么区别?
码字按作用分为两类。数据码字是输入的字符串本身转换为比特流后按 8 位分割的块,是 QR 码“承载的内容”。纠错码字是通过里德-所罗门编码从数据码字计算出的冗余恢复数据,即使污损导致部分模块无法读取,也能恢复内容。扫描时解码器先用纠错码字检测并修复损坏,再将数据码字解码回原始字符串。
容量表的数字是如何由码字决定的?
生成器规格表中“版本 X 可容纳多少位数字、多少个字符”的容量数字,都是从数据码字数反推出来的。例如版本 1、等级 L 的数据码字为 19 个 = 152 位;减去模式指示符和字符计数指示符的位数后,按各模式每字符的位数(数字模式 10/3 位、字母数字模式 5.5 位、字节模式 8 位)分配,就能得到与容量表一致的数字。编码后比特流末尾的终止符,以及排列后填补区域零散空缺的剩余位,都是这一机制的周边概念。