Qraft

剩余位

剩余位 (Remainder Bits) 是指在 QR 码符号内排列完所有码字之后,用来填充数据区域中剩余零散模块的比特。其值全部规定为 0,不携带任何数据。国际标准 ISO/IEC 18004 为每个版本规定了确切的剩余位个数。

为什么会产生剩余?

QR 码的数据以 8 位的码字为单位管理,但符号中可用于放置数据的模块数(去除定位图案等功能图案以及格式信息、版本信息后的数量)不一定是 8 的倍数。码字铺满后可能剩下不足 8 个的零散模块,这些模块用 0 填充,即为剩余位。剩余位不参与纠错计算,也不影响读取结果。

各版本的剩余位数

版本剩余位数
10
2〜67
7〜130
14〜203
21〜274
28〜343
35〜400

个数只会是 0、3、4、7 之一,因为它由各版本的模块总数和功能图案的布局机械地决定。生成库会自动处理,使用者几乎不会注意到它,但在逐位分析 QR 码内部结构时是不可缺少的概念。

终止符有什么区别?

两者都是「填 0」,但作用的层面不同。终止符是编码阶段附加在数据比特流末尾的「数据结束」标记,插入在纠错计算之前。而剩余位出现在最后阶段:所有数据码字和纠错码字都作为模块排列完毕后,用于填补区域的零散空缺。掩码处理会应用于整个编码区域,因此剩余位的模块同样会被掩码。