不知道從什麼時候開始,我們的生活中充滿了二維碼。加好友掃一掃,下載文件掃一掃,進入小程序掃一掃,就連學校門口賣烤紅薯的老大爺,三輪車上都貼了二維碼,支持掃碼付款。
那麼,這些小格子組成的二維碼,到底是怎樣生成的?二維碼,又是什麼原理呢?
首先,舉個栗子。
大家去超市結賬的時候,收銀員掃著商品的條形碼,電腦在水平方向上識別粗細不均的黑白條,就能找出商品編號信息,比如價格,商品名稱。
相比於條形碼只在一個緯度上工作,二維碼在水平和垂直兩個緯度上都攜帶了信息,也就是做成了這個方塊狀的東西。條形碼和二維碼這對好兄弟,其實就是給數字、符號這類的信息換了一身衣服,把他們打扮成能給電腦識別的黑白條和方塊。
這種方塊是怎麼變成能被電腦識別的圖案的呢?
這就要提到一個人類具有劃時代的發明了,那就是二進制。我們平時使用的數字和字母,還有漢字等各種字符,雖然畫風完全不同,但是機智的人類發明了一種方法,使他們都能被統一轉變為0和1組成的二進制數字序列,這個轉化的過程叫做編碼。
再舉個栗子,編碼是怎麼回事。
國際上有幾套通用的編碼規則。比如AB,這個由兩個英文字母組成的字符。根據編碼規則,每一個獨立的英文字母都有一個唯一的十進制數字與之對應,而想AB這樣的字符串,則要在對應數字的基礎上在做運算,而運算結果在轉化成二進制,就是一串數字。在整個計算機和物聯網文明都是建立在這種二進制編碼上的。
我們回到二維碼的生成原理上,字符在變成只有0和1組成的數字序列後,在進行一系列優化算法後,就得到了最終的二進制編碼。在最後這串編碼中,一個0對應的就是一個白色小方塊,一個1對應的就是一個黑色的小方塊。我們把這些小方塊按照8個一組,填進大方塊裡,這就是一個完整的,可以被手機相機識別的二維碼圖案了。
為什麼所有的二維碼,都有三個小方塊在邊上?其實這個
三個一模一樣的小方塊是用來給手機相機定位的,這樣不管你的二維碼是正的掃還是倒著左右掃,都能被手機相機識別,並且掃出來的結果都一樣。閱讀更多 人才加 的文章