這個問題,我以一名專業(yè)性學(xué)生的知識給大家解釋下。
我們先了解什么是二維碼。不知道從什么時候開始,我們的生活突然之間就充滿了二維碼??淳W(wǎng)頁要二維碼,加好友要二維碼,現(xiàn)在就連樓下賣水果的大爺付款也要掃二維碼。
那么大家有沒有想過,這個長得奇怪的東西,到底是怎么來的呢?二維碼到底是什么原理?今天我就用我專業(yè)性的知識給大家科普一下。
我們在介紹二維碼原理之前,給大家說下條形碼,也就是超市收銀員結(jié)賬的時候掃的那個東西。電腦在水平方向上識別粗細不均的黑白條,就能找出藏在里面的商品編號信息,比如價格,商品名稱。相比于條形碼只在一個緯度上工作的原理,二維碼在水平和垂直兩個緯度上都攜帶了信息,也就是做成了這個方塊狀的東西。條形碼和二維碼這對好基友,說白了其實就是給數(shù)字和母還有符號這類的信息換了一身衣服,把他們打扮成了能給電腦識別的黑白條和方塊。
那么最關(guān)鍵的問題來了,這種方塊是怎么變成能被電腦識別的圖案的呢?這就要提到一個人類具有劃時代的發(fā)明了,那就是二進制。我們平時使用的數(shù)字和字母還有漢字等各種字符,雖然畫風(fēng)完全不同,但是機智的人類發(fā)明了一種方法,使他們都能被統(tǒng)一轉(zhuǎn)變?yōu)?和1組成的二進制數(shù)字序列,這個轉(zhuǎn)化的過程叫做編碼。
國際上有幾套通用的編碼規(guī)則。我們今天就用一個例子給大家感受下,編碼是怎么回事。比如AB,這個由兩個英文字母組成的字符。根據(jù)編碼規(guī)則,每一個獨立的英文字母都有一個唯一的十進制數(shù)字與之對應(yīng),而想AB這樣的字符串,則要在對應(yīng)數(shù)字的基礎(chǔ)上在做運算,而運算結(jié)果在轉(zhuǎn)化成二進制,就是一串?dāng)?shù)字。對了,在整個計算機和物聯(lián)網(wǎng)文明都是建立在這種二進制編碼上的。你在看的視頻,在你的手機上只是一串0和1而已。
我們回到二維碼的生成原理上,字符在變成只有0和1組成的數(shù)字序列后,在進行一系列優(yōu)化算法后,就得到了最終的二進制編碼。在最后這串編碼中,一個0對應(yīng)的就是一個白色小方塊,一個1對應(yīng)的就是一個黑色的小方塊。我們把這些小方塊按照8個一組,填進大方塊里,這就是一個完整的,可以被手機相機識別的二維碼圖案了。
對了,不知道大家注意到?jīng)]有,為什么所以的二維碼,都有三個小方塊在邊上?其實這個三個一模一樣的小方塊是用來給手機相機定位的,這樣不管你的二維碼是正的掃還是倒著左右掃,都能被手機相機識別,并且掃出來的結(jié)果都一樣。