二維碼的數量是有限的嗎?為什麼?

我的意思是他會不會像為IPV4一樣,有一天被耗盡,不得不使用N維碼?


二維碼的編碼極限在於其信息量。與IPv4不同,二維碼並不是一個將內容和標識手動匹配的過程,而是依據一定的規則,將一種類型的信息「翻譯」成另一種類型(並保持原有信息內容)的過程。

如同將中文翻譯成英文,如果中文原文很長,那翻譯而得的英文一般也會很長。同樣的,如果原始信息量很大,生成的二維碼也會具有很大的面積。

如果限制二維碼的面積,不需要有一天,現在就可以馬上構造出過於複雜以致於超出限制的二維碼,只需要將大量信息作為輸入文本即可。就好比,現在讓你把金庸的小說翻譯成英文,但限制翻譯結果最多只能有10個單詞,任何人都會抓狂的。

現在我們看到的二維碼大小相對固定,是因為相對我們通常輸入的信息,常用大小的二維碼所能容納的信息量已經足夠,冗餘部分一般用於放置糾錯碼,或者更容易被演算法識別的修飾信息。

PS:比起二維碼,我更好奇那些長度固定的短網址是如何容納網路上如此多的鏈接信息的……

===9月22日補充===

看了@Ivony 的回答並查找相關資料,確實QR碼的規範中,對其圖案的面積有詳細的規定。按照http://QRCode.com http://www.qrcode.com/en/index.html,QR碼分為version 1到version 40共40種類型。其中version 1使用的是21乘21的點陣;version每增加1,點陣邊長就會增加4,直至version 40變成177乘177的點陣:

其所能容納的信息量(按最低糾錯級別算),version 1為152 bit,version 40為23648 bit(即維基上說的7089個數字或4296個字母。注意bit到字元數的換算過程中,還需要考慮標識符、糾錯碼等演算法必需的信息,見http://www.qrcode.com/en/databit.html)。由此可以看出,信息量和二維碼面積是密切相關的。如果想在version 1的QR碼中編碼大於152 bit(41個數字)的信息,依據規範是不可能的,但這種不可能是演算法上的不可能,並不等同於題目中所描述的「耗盡」,其中並沒有逐漸消耗的過程。

至於為什麼規範只到version 40為止,沒有更大的QR碼,估計是作者認為過於複雜的圖像所需要的識別能力的提升已經超出了其中的信息所能帶來的益處(參見上面那個version 40的QR碼圖像),畢竟我們使用二維碼不是用來把金庸的小說編碼進去。至於演算法理論上能否支持更大的QR碼,我現在並不確定。

其它種類的二維碼見得相對較少,暫時不費勁去找資料了。


如果問題是「二維碼」的數量是有限的嗎?(廢話,問題就是這樣問題好吧!),當然不是,這個問題好比問,門牌號是有限的嗎?BASE64能表示的數是有限的嗎?顯然,不加限制的二維圖案有無限可能,不存在什麼數量限制。

但是如果是說:QR碼是有限的嗎?

當然:

QR碼數據容量

數字

最多7,089字元

字母

最多4,296字元

二進位數(8 bit)

最多2,953 位元組

日文漢字/片假名

最多1,817字元(採用Shift JIS)

中文漢字

最多984字元(採用UTF-8)

中文漢字

最多1,800字元(採用BIG5)

來自維基百科:http://zh.wikipedia.org/wiki/QR%E7%A2%BC


不明白為什麼有人說是無限的…

一張21*21的QR碼,每個點黑白兩種顏色,那最多也就只能有2^(21*21)種表示,明顯是有限的

有說可以被編碼的信息是無限的…實際上最多一千多字的信息所能表示的組合同樣是有限的


一個根據對象生成圖案的機制,所以,不會有限........


廣義上講二維碼是無限的,二維碼是一個入口,鏈接的是整個互聯網。為什麼二維碼這兩年能這麼大的發展,不就是這個原因嗎?


二維碼只是將源信息圖形化。以 將時間戳 編碼為二維碼為例

時間會持續下去不重複,則二維碼亦不重複。


我覺得,從信息量上面來說,單個二維碼的信息應該是有限的,能夠表示無限信息的標示,其應該本身也是無限大的。

不過二維碼能夠表示的信息隨著面積變化(也取決於識別精度),能夠增大。邏輯上來說,只要信息有限,二維碼就能表示。畢竟,這個世界上沒有含有無限信息的數據。


編碼規則不同,代表的信息也就不同。就像0和1可以代表很多種自己定義的兩個方面。


二維碼可以把圖片、聲音、文字、簽字、指紋等可以數字化的信息進行編碼,用條碼錶示出來;可以表示多種語言文字;可表示圖像數據。

雖然它也是「0」和「1」來記錄信息的,但是圖片,聲音,文字卻是無窮無盡的,編碼也自然是不會重複的,所以二維碼不用擔心資源會被用盡。


只要有最大長度,就可以認為是有限的。道理很簡單,如果一個字元串可以表示另外一個字元串,那怎麼表示它本身?


推薦閱讀:

亞馬遜一直虧損,這部分虧損又是怎麼補充的?
請問為什麼清華北大盛產商界精英,卻沒有產生商界的頂尖領袖?
如何屏蔽小黃車App里鹿晗的語音?
為什麼有了iPhone、iPad才有了智能手機、平板電腦市場的真正繁榮?
生活中的哪一刻,讓你覺得互聯網改變了我們的生活?

TAG:移動互聯網 | 二維碼 |