二維碼的容量有多大?
二維碼的編碼極限在於其信息量。與IPv4不同,二維碼並不是一個將內容和標識手動匹配的過程,而是依據一定的規則,將一種類型的信息「翻譯」成另一種類型(並保持原有信息內容)的過程。
如同將中文翻譯成英文,如果中文原文很長,那翻譯而得的英文一般也會很長。同樣的,如果原始信息量很大,生成的二維碼也會具有很大的面積。
如果限制二維碼的面積,不需要有一天,現在就可以馬上構造出過於複雜以致於超出限制的二維碼,只需要將大量信息作為輸入文本即可。就好比,現在讓你把金庸的小說翻譯成英文,但限制翻譯結果最多只能有10個單詞,任何人都會抓狂的。
常見二維碼:
現在我們看到的二維碼大小相對固定,是因為相對我們通常輸入的信息,常用大小的二維碼所能容納的信息量已經足夠,冗餘部分一般用於放置糾錯碼,或者更容易被演算法識別的修飾信息。
比起二維碼,我更好奇那些長度固定的短網址是如何容納網路上如此多的鏈接信息的……
QR碼的規範中,對其圖案的面積有詳細的規定。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到字元數的換算過程中,還需要考慮標識符、糾錯碼等演算法必需的信息。由此可以看出,信息量和二維碼面積是密切相關的。如果想在version 1的QR碼中編碼大於152 bit(41個數字)的信息,依據規範是不可能的,但這種不可能是演算法上的不可能,並不等同於題目中所描述的「耗盡」,其中並沒有逐漸消耗的過程。
至於為什麼規範只到version 40為止,沒有更大的QR碼,估計是作者認為過於複雜的圖像所需要的識別能力的提升已經超出了其中的信息所能帶來的益處(參見上面那個version 40的QR碼圖像),畢竟我們使用二維碼不是用來把金庸的小說編碼進去。至於演算法理論上能否支持更大的QR碼,我現在並不確定。
不同的二維碼的容量是不同的。
常見二維碼容量如下:
單個QR碼(尺寸177x177)最多容納2953個位元組(或7089個數字或1817個GB2312漢字),最多16個QR碼可以構成一組,大約表示即16x2953=47248個位元組
PDF417:
單個PDF417可以容納1108個位元組(或2710個數字或554個GB2312漢字),最多99999個PDF417可以構成一組,大約表示 99999*1108=110798892個位元組(即近100MB),表示一篇文章綽綽有餘。
單個DataMatrix碼(尺寸144x144) 可以容納1555個位元組(或3116個數字,或777個GB2312漢字),最多16個DataMatrix碼可以構成一組,大約表示1555*16=24880個位元組。
Hanxin碼
單個Hanxin碼(尺寸189x189)最多可以表示3261個位元組(或7827個數字或常用漢字2174個)。不能自動分組。
推薦閱讀:
※有哪些貼吧值得推薦?
※搜索引擎科學上網技能你知道哪些?
※門戶網站有必要看嗎?
※民愛貸3月1日正式上線「春天百花開 理財好運來」活動
※馬雲、馬化騰、李彥宏你更喜歡誰?為什麼?