別說二維碼被消耗了,二維碼的原理你應該瞭解後再說。

​最近總是看到好多人的假設,二維碼每天被消耗一百億會不會被消耗完?

​其實我感覺二維碼的使用,不應該用消耗這個詞來表示,二維碼不是一個專屬id等,他只是對字符串進行翻譯的過程,因此同一個字符串在不同人的手中仍然是一樣的碼。下面讓我們瞭解一下二維碼的簡單原理。

​在二維碼上面,白色小方塊對應的就是0,1對應的就是黑色小方塊。與之對應的就是現在手機、計算機等電子設備的二進制的0和1。當二維碼進行生成和讀取時,通過顏色反差讀取到二維碼上的01順序,之後通過數字、字節、特殊字符、混合編碼、漢字編碼等來將二進制進行轉為我們可以認識的字符。

別說二維碼被消耗了,二維碼的原理你應該瞭解後再說。

二維碼分佈


​二維碼MAC地址,分配到設備上就是你這個設備專屬的,永遠只屬於你一個的。例如:我創建一個二維碼,二維碼內容是123,遠在天南海北的你,創建一個二維碼的內容也是123,只要我們的糾錯程度、二維碼的版本一樣,那麼你生成的二維碼和我生成的二維碼就是一樣的。也就是說二維碼是可重複的,並不是你生成了這個樣式的,別人下次生成和你一樣的內二維碼就變化了。

別說二維碼被消耗了,二維碼的原理你應該瞭解後再說。

二維碼結構

​上圖為21x21二維碼樣式,黑白塊為定位基準,黃色的方塊為儲存信息區域,只有黃色的才能將你的字符串經過轉為二進制之後進行儲存。


​這裡引用搜狐的一個分析,以25x25矩陣的付款碼舉例,除去定位用的大方塊和限制區域,能代表信息的還有 478 個小方塊,所以可以表示的二進制的形式2^478個二維碼,只要你的輸入的文字數目包括在那麼可用二進制表示的字節裡邊,無論你存什麼,他都能表示出來。但是哪怕你多一個字節,他也是表示不出來的。

​一個版本的二維碼個數是一定的,你的文本生成生成二維碼只是從一個版本中所有二維碼裡中間選出能表示出你內容的二維碼。所以來說不存在什麼消耗。唯一的消耗,也就是如果25x25的陣列中的字節數小於你的字符串的字節數,那麼就需要更高版本的二維碼29x29或者更高,最多到177x177。

​我們平時一掃二維碼存在跳轉或者同一個碼在不同的應用打開卻是不用的頁面,原因是因為那些是掃碼器的對掃碼獲取的內容進行理解和翻譯,例如掃到的url他就會自動幫你打開網頁。這並不是二維碼的去指示它去做,二維碼只是儲存內容罷了。

​現在我們廣泛使用的是QR碼,由日本進行研發,中國人現在也開發了自己的二維碼是漢信碼和QR碼不同,但是相似,原理基本都類似。大家有興趣可以去查看一下。下圖為漢信碼的樣式。

別說二維碼被消耗了,二維碼的原理你應該瞭解後再說。

漢信碼


本文如有錯誤還請批評指教,謝謝讀者。


分享到:


相關文章: