說到二維碼,大家再熟悉不過了,我們每天都會掃一掃,支付、加好友、登錄賬號、進出車站等等,它存在于我們生活的方方面面,用途廣泛,已經成為我們不可或缺的朋友。
總之,這個由黑白兩種顏色小方塊組成的圖案,是我們很得力的助手,那么,為什么只要我們隨便一掃,它總能帶給你所需?
二維碼與條形碼的比較
簡單的說,二維碼是一種開放性的信息存儲器,它能將固定的信息存儲在自己的黑白小方塊之中。而且它可以無限使用,對識別器沒有任何要求,任何設備只要帶掃一掃的功能,都可以將它所存儲的信息讀取出來。
它的工作原理就跟商品外包裝上的條形碼一樣,只不過條形碼是通過黑白條紋來存儲商品的信息的。
雖然它們的原理相同,但條形碼的信息存儲量比二維碼要少的多,條形碼只能進行最基本的信息存儲。這主要是由于條形碼只能在水平方向進行識別,而條形碼的水平寬度有限,信息存儲量無法拓展。
二維碼的工作原理
與條形碼想相比,二維碼把黑白條紋改成黑白小方塊,加大了信息的存儲量,也能表示更多的數據類型,在讀取信息的同時,可以從水平方向和垂直方向來讀取,這樣又能加入更多的信息在二維碼之中。
二維碼工作的原理其實就是二進制算法。二進制是將所有的語言信息用機器語言0和1表達出來。世界上的各種各樣的語言文字至少有上千種,人可以通過學習別人的語言來進行翻譯,但機器卻不可以。
為使機器識別出不同的語言文字,科學家們將讀音不同意思相同的語言轉換成了數字編碼,比如說英文的“one”和漢字的“一”是意思相同的,都可以由二進制編碼“00000001”表示出來。
可以說,二進制編碼是一切語言的翻譯器,同樣我們可以在文字語言和機器語言之間相互轉換。
二維碼就是將我們能看懂的文字語言,以機器語言的形式來存儲。其中黑色小方塊代表的是1,白色小方塊代表的是0,黑白相間的圖案其實就是一串編碼,掃碼的過程即翻譯編碼的過程。
那編碼起始位置怎么定位呢?我們注意到,每個二維碼的邊角部位都有三個位置探測圖形(大方塊),由此來起到定位作用。三個點能確定一個面,這能保證我們在掃碼時,不管手機橫著掃、豎著掃或者斜著掃,都能獲得特定的信息。
二維碼的顏色
那么二維碼為什么是單一的黑白形式?這也跟二進制有關,即黑色的小方塊代表1,白色小方塊代表0,所以常見的二維碼都是以黑白的形式來展現。
通常我們所看到的以及大多數軟件生成的二維碼都是黑色的,但事實上彩色的二維碼生成技術也并不復雜,并且備受年輕人的喜愛,有一些網站也可以提供彩色二維碼在線免費生成的服務。
當然彩色二維碼,會具有普通黑白二維碼的所有功能,呈現出來的是彩色外觀。制作彩色二維碼也是有要求的,即前景色必須為深色,背景色必須為淺色,而且定位點的顏色與其他方塊的顏色盡量類似,不然就會影響識別。
二維碼還有哪些亮點?
基于二維碼的糾錯功能,即使二維碼部分被覆蓋或丟失,掃描設備依然能夠識別出其記錄的完整信息。
當前已有不少“個性二維碼”的生成工具,把一些個性圖案與二維碼進行合成,得到個性化并能被掃描設備識別的二維碼,這種“個性二維碼”得到人們喜愛并且也流行起來。
二維碼會用完嗎?
全世界每天消耗二維碼100億個,每年消耗3.65萬億個。二維碼會用完嗎?
目前,標準的二維碼共有40種,最小為21×21矩陣,最大為177×177。
這里以33×33版本為例,來說明一下二維碼的數量有多少:
此版本中,總共包含了1089個方塊。不過,并不是每個塊都能填進去有意義的信息。其中,有三個黑色的大方塊用于掃描定位,不包含信息。每個用于定位的黑色大方塊由7×7=49個小塊組成,定位用掉的方塊總數為49×3=147塊。因此,用于表示信息的方塊總數為1089-147=942塊。每個方塊有兩種填充方式,要么0要么1,所以33×33版本的二維碼總數為2^942,即3.7×10^283(37后面跟了282個0)。
假設全世界每天消耗二維碼100億個二維碼。如果自宇宙在138億年前誕生以來,人類就開始以這個速度消耗二維碼,人類也才用了5.0×10^22個。也就是說,33×33版本足夠人類使用7.3×10^260個“138億年”,或者說10^271年,即1000萬億億…前后共計33個億…億億年。
如果再算上另外39個版本,二維碼總數更加巨大,例如,177×177版本的變化總數高達5.2×10^9386(2^31182)。理論上,如果人類能夠在宇宙中存在足夠漫長的時間,二維碼是可以用完的,但這個時間實在太漫長了,也許就連宇宙本身都等不到那一天。
即便二維碼真的用完,說不定遙遠未來的人類還會繼續增加更多的維度,其變化形態將會更多。