目錄
前言
不知不覺中,我們的生活到處充滿了二維碼。登錄賬戶需要二維碼;加好友需要二維碼;共享單車需要二維碼;商品包裝上也有二維碼;甚至連樓下賣水果的阿姨手裏都拿張二維碼收款。那麼,有沒有想過這個二維碼到底是什麼東西呢?那麼這個二維碼的圖案會不會多到不小心重合了呢?
條形碼
在二維碼出現之前,大行其道的還得是條形碼,比如超市收銀員掃的那個黑白條就是條形碼。條形碼是一維數據,當機器在水平方向上掃碼這些粗細不同的黑白條時能夠獲取到其中的數據信息。相比於只在一個維度上攜帶信息的條形碼,二維碼在水平、垂直兩個維度上都攜帶了數據。
說白了,條形碼和二維碼都是對一些數字、字母、字符等人們共識的常規文字,轉換成另外一種相對應的符號(黑白條、黑白方塊),然後又讓這些符號能夠被機器識別和翻譯成爲常規文字。
靜態二維碼
二維碼其實有點類似於我們學生時代考試中用到的答題卡。我們在考試中將需要選擇的正確答案用2B鉛筆✏️塗黑後,這個信息就可以被機器掃描出來。機器批閱的效率非常高,一秒鐘就可以知道你考了多少分。
當然,二維碼和答題卡的原理還不太一樣。二維碼的生成原理並不難理解,其實就是把數據信息轉換成對應的黑白方塊,最後拼接成了一個日常可見的正方形圖案。也就意味着,如果改變了數據信息,就會直接改變二維碼的圖案,這也是靜態碼的重要特點。
二進制生成圖形碼
說了半天,還是沒用說到關鍵點,就是怎麼就把數據信息轉換成對應的條形碼和二維碼。
這裏先介紹一下劃時代意義的“二進制”。二進制由0和1組成,二進制的過程也被稱爲編碼過程,它可以將數字、字母等字符轉換成由0和1組成的數字集合。
下面是字符轉二進制的轉換表格,在線二進制轉換:http://www.txttool.com/wenben_strbinary.asp。
字符 | 二進制 |
0 | 00110000 |
1 | 00110001 |
2 | 00110010 |
3 | 00110011 |
10 | 00110001 00110000 |
11 | 00110001 00110001 |
a | 01100001 |
b | 01100010 |
c | 01100011 |
ab | 01100001 01100010 |
. | 00101110 |
比如,百度的網址 “www.baidu.com ” 轉換成二進制後如下所示:
01110111011101110111011100101110011000100110000101101001011001000111010100101110011000110110111101101101
如果,此時“0”對應白色方塊、“1”對應黑色方塊的話,就會出現許多大大小小黑白方塊。最後把這些方塊填入一個大的正方形內,就形成了二維碼圖案了。
二維碼的定位
不知道,大家有沒有好奇,爲什麼所有的二維碼的邊角都有三個大的黑色方塊。如下圖所示:
其實,這三個大小相同的黑色方塊是爲了給二維做定位的。定位?啥意思?很簡單啊,就是你的二維可能斜了、歪了、倒立了,相機就可以通過這三個黑方塊點判斷二維的正確存放位置了啊!💡叮咚!這下大家都明白了吧。