不知道从什么时候开始,我们的生活突然之间就充满了二维码,看网页要扫二维码,加好友要扫二维码,现在连学生街修自行车的大爷都支持扫码支付。 其实在介绍二维码原理之前你可能已经猜到了,二维码就是把信息翻译成黑白小方块,然后填到这个大方块里,这有点类似中学考试用的答题卡,就是把信息变成机器可扫描图案,一秒钟就能知道你得了多少分。当然,二维码的原理和答题卡还不太一样,这个稍后会讲到。
我们先来说一下二维码的哥哥----条形码。也就是超时收银员扫的那个黑白条,电脑在水平方向上识别粗细不均的黑白条,就能找出藏在其中的商品编号信息,相比于只在一个维度上携带信息的条形码,“二维码”在水平垂直两个维度上都携带了信息,也就做成了方块状的样子,条形码和二维码这一对好兄弟说白了,其实就是给数字、字母、符号等这些字符换了一身衣服,把他们打扮成了能被手机相机识别的黑白条或块。那么,最关键的问题来了,这些字符,到底是怎么变成这种二维码图案的呢?
这就要提到一个人类具有划时代意义的伟大发明“二进制”。我们平时使用的数字。字符、汉字等各种字符,虽然画风完全不同,但是机智的人类发明了一个方法,使他们都可以被统一转换成又0和1组成的二进制数字序列,这个转换的过程叫做编码,国际上有几套通用的编码规则,我们今天就用一个例子来感受一下,编码是怎么回事。比如AB这个由两个英文字母组成的字符,根据编码规则,每一个独立的英文字母都有唯一一个十进制数字与之对应,而像AB这样的字符串则要在对应数字的基础上再做运算,而运算的结果再转换成二进制,就变成“000111001101”这样的数字,哦对了,整个计算机和互联网文明都是建立在这种二进制编码上的,你现在看得视频,不管在你的电脑还是手机里,其实也只是一串0和1而以。
我们回到二维码的生成原理上,字符在变成只有0和1组成的数字序列后,在进行一系列优化算法(此处自行脑补一系列优化算法),就得到了最终的二进制编码。在最后的这串编码中,一个0就对应的是一个'白色小方块',一个1就对应的一个‘黑色小方块’,我们把这些小方块分成8个一组填进大方块里,这就是一个完整的、可以被手机相机识别的二维码图案了。 如果你要问为什么所有二维码角上有3个大方块,其实这3个一模一样的方块是用来给收相机定位的,不信你就扫一扫,是不是不管正着扫、反着扫还是斜着扫结果都是一样的?
|