二維碼是什么原理?不知道從什么時候開始,我們的生活突然之間就充滿了二維碼,看網(wǎng)頁要掃二維碼,加好友要掃二維碼,現(xiàn)在連樓下賣草莓的大爺都支持掃碼支付,那么,你有沒有想過,這個長得很奇怪的二維碼,到底是怎么來的呢?它的原理是什么?看完你就知道了
其實在介紹二維碼原理之前你可能已經(jīng)猜到了,二維碼就是把信息翻譯成黑白小方塊,然后填到這個大方塊里,這有點類似中學(xué)考試用的答題卡,就是把信息變成機器可掃描圖案,一秒鐘就能知道你得了多少分。當(dāng)然,二維碼的原理和答題卡還不太一樣,這個稍后會講到。
我們先來說一下二維碼的哥哥----條形碼。也就是超時收銀員掃的那個黑白條,電腦在水平方向上識別粗細(xì)不均的黑白條,就能找出藏在其中的商品編號信息,相比于只在一個維度上攜帶信息的條形碼,“二維碼”在水平垂直兩個維度上都攜帶了信息,也就做成了方塊狀的樣子,條形碼和二維碼這一對好兄弟說白了,其實就是給數(shù)字、字母、符號等這些字符換了一身衣服,把他們打扮成了能被手機相機識別的黑白條或塊。那么,最關(guān)鍵的問題來了,這些字符,到底是怎么變成這種二維碼圖案的呢?
這就要提到一個人類具有劃時代意義的偉大發(fā)明“二進(jìn)制”。我們平時使用的數(shù)字。字符、漢字等各種字符,雖然畫風(fēng)完全不同,但是機智的人類發(fā)明了一個方法,使他們都可以被統(tǒng)一轉(zhuǎn)換成又0和1組成的二進(jìn)制數(shù)字序列,這個轉(zhuǎn)換的過程叫做編碼,國際上有幾套通用的編碼規(guī)則,我們今天就用一個例子來感受一下,編碼是怎么回事。比如AB這個由兩個英文字母組成的字符,根據(jù)編碼規(guī)則,每一個獨立的英文字母都有唯一一個十進(jìn)制數(shù)字與之對應(yīng),而像AB這樣的字符串則要在對應(yīng)數(shù)字的基礎(chǔ)上再做運算,而運算的結(jié)果再轉(zhuǎn)換成二進(jìn)制,就變成“000111001101”這樣的數(shù)字,哦對了,整個計算機和互聯(lián)網(wǎng)文明都是建立在這種二進(jìn)制編碼上的,你現(xiàn)在看得視頻,不管在你的電腦還是手機里,其實也只是一串0和1而以。
我們回到二維碼的生成原理上,字符在變成只有0和1組成的數(shù)字序列后,在進(jìn)行一系列優(yōu)化算法(此處自行腦補一系列優(yōu)化算法),就得到了最終的二進(jìn)制編碼。在最后的這串編碼中,一個0就對應(yīng)的是一個'白色小方塊',一個1就對應(yīng)的一個‘黑色小方塊’,我們把這些小方塊分成8個一組填進(jìn)大方塊里,這就是一個完整的、可以被手機相機識別的二維碼圖案了。
如果你要問為什么所有二維碼角上有3個大方塊,其實這3個一模一樣的方塊是用來給收相機定位的,不信你就掃一掃,是不是不管正著掃、反著掃還是斜著掃結(jié)果都是一樣的?