挑战难度:⭐

👶:“叔叔,给我画个纹身贴纸吧。我要独一无二的,个性的,复杂又流行上档次的!”

💇‍♂️:“没问题啊,你想要什么?”

👶:“二维码”

哈喽,大家周末好呀!Rookie又和大家见面了~

最近Rookie看到一则新闻,说全世界每天要消耗上百亿个二维码,远远超过了77亿的世界人口总数。

不知道大家听了会不会和Rookie一样,感觉在这个移动互联时代,一夜间,好像生活中到处都是二维码了。

点餐要扫二维码,查快递扫二维码,付钱💰更加离不开二维码。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

它无处不在,出现在游戏中,走进了博物馆,甚至有人还把自己和已故的狗狗🐶的故事写进了二维码里

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

这么全能的二维码,搞笑界怎么能少了它😀,是不是看到这就快要忍不住“长按并且识别图片中的二维码了”

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

也许我们太习惯于它的存在了,一直都没有静下来好好打量过这个小家伙🔍

Rookie就常常好奇,这二维码咋就这么神呢?这背后是啥原理呀?

这期的FunPy101,Rookie想用小学生都看得懂的方式带大家近距离观察一下二维码。当然,按照节目惯例,最后我们还会用Python代码来做个简单有趣的二维码小程序👨‍💻

原理大揭秘💡

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

大家可能都会感觉到,二维码的密码应该就藏在这一个个黑白的小方块里⬛⬜⬛⬜⬛⬜⬛⬜⬛⬜⬛

不过要明白这其中的奥秘,我们得先来认识一下它的哥哥,条形码

哥哥条形码比弟弟二维码早出生了几十年,它浑身上下有着宽窄不等的斑马条纹。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

为什么要先介绍哥哥呢?因为弟弟👨‍🎓二维码继承了哥哥💂条形码最重要的能力,那就是把信息编码成二进制。也就是一串由0️⃣和1️⃣排列组成的数字,用以表示信息。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

通常情况下,0是白色的,1是黑色的。所以哥哥的做法呢,是把0画成白色线条,把1画成黑色的线条。而弟弟的做法则是把0画成白色的小方块⬜,把1画成黑色的小方块⬛。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

无论是条纹也好,格子也罢,只要是黑白分明的,都有一个好处,那就是~

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

不好意思,说错了❌,应该是:

好认!

尤其是机器🤖,最喜欢这俩颜色了。比如我们又爱又恨的答题卡,你直接写ABCD机器可不认识,但是哪里涂了哪里没涂,它一扫就知道了。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

可怕的答题卡,你不涂黑它就抹黑你

说到这,你们可能会问,哥哥和弟弟是怎样把信息变成二进制的呢❓ 方法有很多。

方法一:数字直接转换

 

还记得Rookie在《十只小老鼠和一千零一块芝士蛋糕》的脑筋急转弯里提到的,十进制的数字可以直接转变成二进制。想了解细节的同学们可以回去阅读哦。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

顺便回顾下文章里提到的,使用Python的话,只用一行代码就能搞定了。比如数字65👇

>>> bin(65) # 使用bin做十进制到二进制的转换
'0b1000001' # 返回的二进制结果 '0b'开头代表二进制

方法二:ASCII编码

 

方法一很简单,可是它一但遇到字母符号这类的非数字就没辙了🤷‍♂️

哥哥条形码想到了一个好办法💡。就是使用一种名叫ASCII码的编码形式。

你可以把它看作一个小抄,上面记录了字母,符号,或者数字所对应的十进制数字。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

有了十进制以后,得到二进制就只要使用方法一就可以了。

举个例子吧,比如我们想知道字母A的二进制是多少。我们可以查一下表。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

查表后,我们得知字母A的十进制是65。65的二进制是多少,不就是方法一算出来的1000001嘛。

这儿,同样的,利用Python,只需要再增加一行代码而已。那就是先使用内置的ord方法查找字符的十进制👇

>>> ord("A") # 内置方法直接查字符的ASCII码
65
>>> bin(65)
'0b1000001'

方法三:UTF-8编码

 

哥哥的这个办法可真不错,可是更加的聪明弟弟还不满足

哥哥这样编码,最多也就能应付几百个字符🔢🔠🔣,但是遇到像汉字这样博大精深的语言怎么办?

于是,弟弟苦心钻研,学习了其它更先进的编码形式。比如有一种编码叫UTF-8,它也被称为万国码,使用它,不光是中文,其他许多国家的语言也都能被编码成二进制了。

我们可以把它想象成从小抄📜变成了一本厚厚的大字典📕,字典里面记录了几乎所有的文字,符号和它们所对应的二进制编码。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

要用的时候,我们只需要翻翻字典就可以了,非常的方便。

举个例子,中文,日文,韩文的"你好",通过UTF-8这本大字典就可以查到下面的二进制表示🔍

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

顺便提一句,Rookie就是使用下面代码得到这些0和1的数字的,里面出现的bin, int, hex都有在脑筋急转弯里提到过哦~

>>> bin(int('你好'.encode().hex(), 16))
111001001011110110100000111001011010010110111101

 

好啦,说到这大家一定又有疑问,既然哥哥和弟弟都是一个原理,有共同的特点,那为什么弟弟二维码就能这么火呢🔥?

因为弟弟二维码通过后天不懈的努力练就了许多新的优点✨✨✨

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

哥哥,我有升级哦~

优点一:360度无死角

 

哥哥条形码扁扁的,只有左右方向藏了信息,机器读取它的时候,必须得对准。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

而弟弟二维码则有着三个大大的正方形犄角,就像我们平时的指南针,来帮助定位。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

有了它,不要说二维码的个头颠倒了,就算是它吃了,饿了,长跑偏了,都不影响。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

猜猜看,上面三个哪个扫不出来?

优点二:胃口更好

 

哥哥条形码受到宽度的限制,一般来说它最多只能表示30个左右的字符,而且一般只能是字母🔠或者数字🔢

而弟弟,上下左右都能记录信息,而且还不挑食,多的时候,弟弟的肚子里能装的下多达4000个的各式各样的字符信息。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

信息的存放方式大致为每8个格子一组,从下到上,从右往左

优点三:打不死的小强

 

大家有没有这样的经历,去超市里买东西🛒,但是商品上的条形码皱了或者破损了,收银员阿姨扫不出来。

这个问题,到了弟弟二维码那就好了很多。弟弟加入了容错的功能,就像打不死的小强,最多的时候哪怕缺了三分之一,都还照样读的出来。

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

再猜猜,上面三个哪个扫不出来?

以上就是弟弟二维码的奥秘了。总而言之,二维码就是把任何想要传达的信息编码成二进制,然后用黑白格子一格格的铺起来。

这么说,大家听明白了嘛?

PYTHON制作二维码👨‍💻

二维码这么好用,那作为FunPy101的保留环节,就让我们一起动手做一个二维码的小程序玩吧~

这个小程序非常的简单。总共分为两步。

第1️⃣步,获取你想要生成二维码的消息。

第2️⃣步,生成二维码。

 

为啥这么简单,还不是因为Python的世界里到处都有好用的工具。

二维码的英文叫QR Code,Python里也有个名叫qrcode的工具包🔧。

使用它一共简简单单三行代码。快来动手试试吧✍

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

文末小彩蛋🥚

恭喜你,又看到了这儿,是不是知道Rookie每次都会给准备一个惊喜彩蛋呢?

还记得正文部分Rookie说的嘛,二维码弟弟通过后天的努力获得了许多哥哥没有的优点。

其中最后的一个优点说到,弟弟二维码有很强的容错能力。意思就是,画面有一点点的破损,变化,是不会影响到扫描结果的。

这就给了Rookie很多的灵感,一点点?,那是多少呀?如果我在二维码上面画画呢🎨?

✍✍✍画好咯~, 下面就是Rookie要送给你们的本期彩蛋~

炒鸡科普!小学生都能听得懂二维码原理?-少儿编程之家

就是你了!皮~卡皮~皮卡丘~~~~

 

投稿:趣派编程

作者:Rookie

原文链接:点击链接