二維碼會有用盡的那天嗎?
相信二維碼在大家日常生活中肯定不會陌生,今天我們就來探討一個有趣可能也無趣的話題:二維碼會有用盡的那天嗎?像平時大家使用的健康碼、支付碼、乘車碼、名片二維碼、校園碼……大家是否會有個疑問,天天這么用二維碼,會不會有一天用完啦?那會不會重復(fù)出現(xiàn),造成系統(tǒng)混亂BUG了?

二維碼會掃完嗎
問:二維碼會被咱掃完了嗎?
答:會的。
(但是)
凡是總歸有個但是,請看下文分解。

配圖:二維碼區(qū)域介紹
二維碼只不過是表面,其中隱藏的信息才是靈魂。一個信息就可以生成一些二維碼,一個二維碼就能掃出一個信息,二維碼的功能全看軟件怎么處理這個信息,和二維碼本身及其編碼方式無關(guān)。所以只要是有那個信息,無論是直接發(fā)給你文本信息還是發(fā)給你一個二維碼都是一樣的。
什么時候耗盡
二維碼具體什么時間會耗盡呢,有沒有個確切的時間?前文徐偉軒博客稍微留了一丟丟懸念,但是,總歸要給大家一個交待。
要解釋這個問題,就得稍微了解一下二維碼的前世今生。
二維碼是在一維條碼的基礎(chǔ)上擴(kuò)展出另一維具有可讀性的條碼,使用黑白矩形圖案表示二進(jìn)制數(shù)據(jù),被設(shè)備掃描后可獲取其中所包含的信息。二維碼是由Denso公司于1994年9月研制的一種矩陣二維碼符號,現(xiàn)在共有40個官方版本,編號從Version 1一直到Version 40,最小的是21×21的矩陣(微信付款碼是25×25呆子數(shù)唄),最大的則是177×177。 二維碼的長度、寬度均記載著數(shù)據(jù),它有一維條碼沒有的“定位點”和“容錯機(jī)制”。其中,容錯機(jī)制在即使沒有識別到全部的條碼、或是條碼有污損時,仍然可以正確地還原條碼上的信息。
二維碼的種類有很多,包括PDF417碼、QR碼、EZ碼和QuickMark等。以QR碼為例,它呈正方形,常見的有黑白兩色。在3個角落印有較小,像“回”字的正方圖案,這3個是幫助解碼軟件定位的圖案。

QR碼比其他二維碼相比,具有識讀速度快、數(shù)據(jù)密度大、占用空間小的優(yōu)勢。
例如:微信名片使用了37×37的矩陣規(guī)格,而微信的付款碼是25×25的矩陣規(guī)格。
如下圖,我們看到二維碼的基本結(jié)構(gòu):

二維碼的尺寸是有限的,所以二維碼的數(shù)量也是有限的,但這個有限對我們來說已經(jīng)近乎“無限”,要想掃完所有的二維碼,需要這么……長的時間。
大家觀察一下是不是發(fā)現(xiàn):不同地方二維碼橫豎格數(shù)是不一定相同的(二維碼目前共有40種規(guī)格,最少21x21,一規(guī)格橫豎各加四個格子,最多加39次既177x177),以微信名片舉例,二維碼是橫豎各37個格的正方形,其中三個角有固定的7x7的定位點,所以可用可以變換的點共有37x37-49x3=1222個格子,而每個格子只可能是黑或白兩種情況(電腦二進(jìn)制的0和1),所以共有2^1222種排列組合情況,既理論上可以出現(xiàn)這些個不同的二維碼(有全黑全白還有的中間會放商標(biāo)等圖形占位置等情況可能出現(xiàn)所以是理論上),2^1222的結(jié)果為
不好意思,計算器是崩潰的~

沒關(guān)系,咱們用電腦計算2^1000出來是:
科學(xué)計數(shù)法:1.0715086071863 * 10^301
具體數(shù)字為:
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
額……
我也懶得計算了
反正 大概 也許 可能?一千萬億年后,二維碼會被大家掃完。

據(jù)估算截至到2013年1月4日,全球約有70.57億人,現(xiàn)在則會更多,算世界上共一百億人,平均每個人能分10^292個二維碼用還有大量剩余,比全宇宙中的粒子數(shù)3.28×10^80還要多的多,所以說,二維碼雖然是有限的,應(yīng)該能用完吧……

不好意思,當(dāng)然這只是理論數(shù)值,實際上二維碼并不僅僅是圖形,而是有特定意義的,這其中有大部分是雖然有排列情況但沒有意義(最明顯的,全黑,全白,還有很多是無法準(zhǔn)確表示人可能希望表示的任何情況,所以用不了),但除去這剩下的也夠多了。而既然二維碼是有特定意義的,那么反過來從另一個角度來看,每一個目的每一個要它表達(dá)的值都是不同的,都會形成一條特定編碼,所以這樣看二維碼仍是無限的。
二維碼會重復(fù)嗎
腦洞大開的時候,是不是大家會想到萬一咱自個兒支付寶的收款二維碼和某個超級市場的收款碼撞衫了,然后……嘿嘿嘿,是不是天天能進(jìn)賬超級多……
不好意思,并不會!
二維碼上的黑白點排列并不是隨機(jī)無意義的,而是原始二進(jìn)制代碼,代表某一個意義,而不同的人的二維碼要它表示的意義讓它代表的事是不同的,所以不會有重復(fù)的。
而和條形碼相比而言,二維碼能儲存一維碼不能存的漢字、圖片等信息,以及二維碼相對于條形碼更能容錯!因為二維碼基本都用上了rs碼四級糾錯,還加入了保密措施;尺寸大小可按比例隨意變動,條形碼就只能在固定范圍內(nèi)細(xì)微變化,不然就掃不準(zhǔn)啦。
現(xiàn)實中的特定意義在網(wǎng)絡(luò)數(shù)據(jù)中卻不是不變的!
像大家常用的支付寶付款碼是“活碼”,活碼本身不是存儲的這個目的的碼,而是對一個分配的短網(wǎng)址進(jìn)行編碼,掃描后跳轉(zhuǎn)到這個網(wǎng)址。這樣將內(nèi)容存儲在云端,可以隨時更新、可跟蹤掃描統(tǒng)計,可存放圖片視頻、大量文字內(nèi)容,同時圖案簡單易掃。
缺點是掃描時必須聯(lián)網(wǎng)?。ó?dāng)然咯,超市里掃你的付款碼,你自己是不一定要聯(lián)網(wǎng)的啦)
而不變的是靜態(tài)碼,是直接對電話、地址、網(wǎng)址等信息進(jìn)行編碼(一般最多50個文字), 所以無需聯(lián)網(wǎng)也能掃描顯示,缺點是生成的二維碼圖案非常復(fù)雜,不容易識別和打印,容錯率低,而且印刷后內(nèi)容無法變更,無法存儲圖片和文件。
未來無限可能
二維碼有不同的點密度,目前使用最密集的是“ QR-40” ,它可以存儲2953個字節(jié),即23624位,意味著有2的23624次方個QR-40編碼,這是一個非常大的數(shù)字。
2的23624次方是什么概念呢?它比可觀測宇宙中原子、夸克和光子的總數(shù)量還要多。
按照貝克的理論,點密度最小的是QR-1,它可以儲存7字節(jié),但仍然有2的56次方個QR-1編碼,仍然足夠給地球上每一個原子貼上獨一無二的二維碼。

上面我們看到二維碼的基本圖案,如果每個格子有兩種顏色變化(比如黑白),那么四宮格就有16種可能的組合,也就是2^4,一共16個圖形。
那么照此類推,25×25的微信付款碼共有625個方塊,除去定位用的、冗余糾錯用的,可供利用的是方塊有478個。按照二進(jìn)制,每個方塊只有黑或白兩種選擇,478個方塊理論上可以組合2478個二維碼。
【大家回想一下,高中時候?qū)W的“排列組合”】
假設(shè):微信一年會用掉6000億個二維碼,那微信用完25×25矩陣二維碼,就需要:
2^478÷6000億=1.301×10132年 約等于 好多億年
即便是世界上的所有人一起用,也需要:好多億年吧。
(當(dāng)然,還沒考慮技術(shù)迭代)
所以,一定意義上來講,二維碼好像又是掃不盡,用不完的。
額,大家再試著拋開咱們固有的認(rèn)知,微信25×25矩陣規(guī)格,現(xiàn)有官方規(guī)格就已經(jīng)到了177×177矩陣,而隨著矩陣的擴(kuò)大,所能呈現(xiàn)出來的二維碼數(shù)量可是呈幾何指數(shù)級別增長的。
按照熱寂理論對宇宙終極命運(yùn)的猜想,大約一千萬億年后,行星就將脫離軌道,所有生物都沒辦法依靠恒星活著了,而那個時候二維碼,還是遠(yuǎn)遠(yuǎn)沒有掃完。
你不會說「把宋體用完了」,因為字體天生就是重復(fù)使用的。所以,你也就不會說「把二維碼用完了」,因為二維碼跟字體一樣,固有屬性就是重復(fù)使用。我們可以這么理解,二維碼它不是「資源」,只是一個密碼本,使用二維碼不存在任何的「消耗」,也就不存在「用完」一說?;蛘呶覀兛梢岳斫鉃椤岸S碼中小方塊的排列會不會用完?”,但是這個問題是沒有意義的,所以也就談不上答案是會還是不會。
誠然,我們也看到現(xiàn)在類似刷臉支付大有替代二維碼付款之勢,
但甭管誰技高一籌
未來科技會發(fā)展到什么程度,我們誰也不知道。