剩余位
剩余位 (Remainder Bits) 是指在 QR 码符号内排列完所有码字之后,用来填充数据区域中剩余零散模块的比特。其值全部规定为 0,不携带任何数据。国际标准 ISO/IEC 18004 为每个版本规定了确切的剩余位个数。
为什么会产生剩余?
QR 码的数据以 8 位的码字为单位管理,但符号中可用于放置数据的模块数(去除定位图案等功能图案以及格式信息、版本信息后的数量)不一定是 8 的倍数。码字铺满后可能剩下不足 8 个的零散模块,这些模块用 0 填充,即为剩余位。剩余位不参与纠错计算,也不影响读取结果。
各版本的剩余位数
| 版本 | 剩余位数 |
|---|---|
| 1 | 0 |
| 2〜6 | 7 |
| 7〜13 | 0 |
| 14〜20 | 3 |
| 21〜27 | 4 |
| 28〜34 | 3 |
| 35〜40 | 0 |
个数只会是 0、3、4、7 之一,因为它由各版本的模块总数和功能图案的布局机械地决定。生成库会自动处理,使用者几乎不会注意到它,但在逐位分析 QR 码内部结构时是不可缺少的概念。
与终止符有什么区别?
两者都是「填 0」,但作用的层面不同。终止符是编码阶段附加在数据比特流末尾的「数据结束」标记,插入在纠错计算之前。而剩余位出现在最后阶段:所有数据码字和纠错码字都作为模块排列完毕后,用于填补区域的零散空缺。掩码处理会应用于整个编码区域,因此剩余位的模块同样会被掩码。