二维码的最大容量是多少?
现在我们看到的二维码大小相对固定,是因为相对我们通常输入的信息,常用大小的二维码所能容纳的信息量已经足够,冗余部分一般用于放置纠错码,或者更容易被算法识别的修饰信息。
比起二维码,我更好奇那些长度固定的短网址是如何容纳网络上如此多的链接信息的……
QR码的规范中,对其图案的面积有详细的规定。QR码分为version 1到version 40共40种类型。其中version 1使用的是21乘21的点阵;version每增加1,点阵边长就会增加4,直至version 40变成177乘177的点阵:
其所能容纳的信息量(按最低纠错级别算),version 1为152 bit,version 40为23648 bit(即维基上说的7089个数字或4296个字母。注意bit到字符数的换算过程中,还需要考虑标识符、纠错码等算法必需的信息。由此可以看出,信息量和二维码面积是密切相关的。如果想在version 1的QR码中编码大于152 bit(41个数字)的信息,依据规范是不可能的,但这种不可能是算法上的不可能,并不等同于题目中所描述的“耗尽”,其中并没有逐渐消耗的过程。
至于为什么规范只到version 40为止,没有更大的QR码,估计是作者认为过于复杂的图像所需要的识别能力的提升已经超出了其中的信息所能带来的益处(参见上面那个version 40的QR码图像),毕竟我们使用二维码不是用来把金庸的小说编码进去。至于算法理论上能否支持更大的QR码,我现在并不确定。