二維碼這麼火,它的原理是什麼?
談起二維碼,我們很容易聯想到條形碼(一維碼),沒錯,就是在超市買東西的時候每個商品後面的那個條形碼。或者是你拿快遞時,快遞單上的碼。
不論是二維碼還是條形碼,其目的,就是為了表示産品的信息(編号、圖片、網站鍊接等),方便電腦識别,從而提高效率。
如果要讓計算機識别,那麼勢必要使用計算機的語言:二進制。
生活中我們常用的是十進制,有0,1,2,3,4,5,6,7,8,9十個數,而二進制則隻有0,1兩個數。
(比如,二進制的110,就是十進制的 0*2^0 1*2^1 1*2^2=6 )
如果此時你細心地觀察二維碼,你會發現,它是由白塊和黑塊組成的。
看到這裡可能已經發現了一點端倪,沒錯,白塊表示的就是二進制的“0”,黑塊就是“1”。
但是,很快我們就會有問題,表示數字可以,那麼如果我們要表示字母怎麼表示?
簡單呀,每個字母有一個對應的數字就行了呀。
于是,ASCII代碼産生了(American Standard Code for Information Interchange,美國信息交換标準代碼)。本來它是美國的标準,後來被定為世界标準。
以下是部分ASCII代碼:
還有其他的特殊符号比如 @、#、¥等也有自己的對應的二級制數字對應。
當然,二維碼有很多種類,生活中常見的便是QRcode。
而QR碼上,不同的區域,則表示着不同的信息。(如下圖)
此處,并不是簡單地直接将信息轉換為前面ASCII碼值,然後“0”和“1”對應黑塊白塊直接填到二維碼中。
不同的編碼方式,有着自己不同的規則。
例如:
一個QRcode下編碼一段數字。
在數字模式下,(數字模式指示符符為0001)
對數據:01234567編碼(版本1-H),
1)分組:012 345 67 (每三個數字一組)
2)轉成二進制:
012→0000001100 ;345→0101011001 ;67 →1000011。
3)轉成序列:0000001100 0101011001 1000011
4)字符的數量8個,8轉化為二進制0000001000,(實際上是1000,前面為了滿足格式而添加了0)
5)加入模式指示符)0001:
最終編碼0001 0000001000 0000001100 0101011001 1000011
其他的區域,有關QR碼版本、格式等信息,以類似的方式編碼,然後填到了二維碼中。(當然,不同種類的二維碼,其編碼方式,圖形中的組合排列方式便不盡相同)
至于二維碼中的位置探測圖形,其實是為了讓手機(或是其他掃描儀器)确定方位用的。掃描的儀器會自動地左上角,右上角,左下角的圖案,從而自動地将二維碼“擺正”。
這樣的話,即使你倒着、側着、或是斜着掃二維碼,都能掃描成功。
綜上,二維碼,就是産品信息在通過各類編碼後,通過特定的排列方式以“0”對應白塊,“1”對應黑塊展示出來的圖形。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!