近些年来兴起的二维码,让大家只要扫一扫就能轻松获取各种信息或进行电子支付。这些黑白小方块看似简单,能储存的信息却不少。
在二维码出现之前,我们经常打交道的是商品上的条形码,也就是一维码,二维码就是在此基础上增加了一个维度。它们的原理相似,都是以二进制(0和1)的方式编码信息,只不过条形码仅横向编码信息,而方块状的二维码则是在横向和纵向都可编码信息,因此,二维码所能编码的信息约为条形码的350倍。
二维码中的白色小方块通常代表“0”,而黑色小方块代表“1”,单纯的0和1怎么对应上五花八门的字符呢?如果你有无限量的0和1就可以做到,通过不同的排列组合,世界上所有文字和图像都可以被翻译为这两个简单的数字,让计算机能够读懂。
除了编码呈现给用户的信息,二维码还需要其他模块,比如纠错码。纠错码给予了二维码一定的容错度,从7%到30%不等,日常使用的二维码一般拥有15%的容错度。也就是说即使二维码某部分发生了污损或黑白颠倒,依然能够被顺利识别。这就是为什么你可以在二维码的中央插入自定义图片,而不影响扫码。
不过如果3个角上的大方块发生了遮挡,纠错码也无能为力,这是因为这3个方块是用来定位二维码的位置探测图形,没有它们,机器就认不出这是个二维码。为什么不是4个呢?因为3个点就足以确定这个矩形的范围和方向了。