回覆列表
  • 1 # 程式設計老大叔

    二維碼的基本概念

    通常我們口中的二維碼一般是指QR Code,也就是支付寶、微信支付、火車票等通用的二維碼格式。但是,二維碼的格式可以說多種多樣,包括Data Matrix、QR Code、PDF417、Vericode、Ultracode等,不同的二維碼制式,在不同的領域有著不同的應用。

    QR Code是一種編碼方式,它比傳統的 Bar Code 條形碼能存更多的資訊,也能表示更多的資料型別:比如:字元,數字,日文,中文等等。

    二維碼在一維條形碼的基礎上,將多個條形碼堆積在一起進行編碼。我們產用的矩陣式二維碼是指在一個矩陣空間中透過黑色和白色的方塊進行資訊的表示,黑色的方塊表示1,白色的方塊表示0,相應的組合表示了一系列的資訊,常見的編碼標準有QR 碼,在中國非常常用。

    二維碼編碼原理

    那麼二維碼到底是透過什麼魔力,將人類可以識別的內容(比如中文、網址等)轉為機器能識別的二維碼呢?前面講到的基本概念中提到二維碼中,黑色的方塊表示1,白色的方塊表示0。也就是計算機程式設計領域講的二進位制。我們首先來看人類日常使用的語言是怎麼轉換為二進位制的(關於這個我有寫一篇關於計算機編碼的文章,有興趣的朋友可以翻看)。先看我從文章中拉出來的兩張圖:

    英文字元如何轉換為二進位制儲存

    漢字字元如何轉換為二進位制儲存

    從上面兩個圖可以看到,人類可識別的字元都是透過一種字符集(ASII、Unicode)將字元對映成十進位制數字,然後透過二進位制轉換為二進位制。同樣,二維碼可以根據自己定義的編碼規則和字符集,將這些字元轉換為二進位制,並且利用黑白方塊來儲存二進位制;

    二維碼的容量與數量

    首先,二維碼一共有 40 種尺寸。官方叫法為版本 Version。Version 1 是 21 x 21 的矩陣,Version 2 是 25 x 25 的矩陣,Version 3 是 29 的尺寸,每增加一個 version,就會增加 4 的尺寸,公式是:(V-1)*4 + 21(V是版本號) 最高 Version 40,(40-1)*4+21 = 177,所以最高是 177 x 177 的正方形。也就是177*177個黑/白方塊,一個方塊可以表示一個0或者1;

    理論上Version 40,在內容經過壓縮處理後可以存7089個數字,那麼0~9組合就有10^7089種可能的組合;4296 個字母和數字混合字元,那麼就有1.27^(4296+2)種組合; 2953個8位位元組資料,1817個漢字,那麼就有10^(1817+5)種組合;

    分版本:

    Version 1 :有21*21個黑白方塊,那麼就是2^(21*21)個,轉化成科學計數法就是5.7e+132個;

    Version 40:有177*177個黑白方塊,那麼就是2^(177*177)個,轉化成科學計數法就是9.3e+9430個;

  • 中秋節和大豐收的關聯?
  • 現在生活條件好了,白米白麵,大肉蔬菜,為何生病的太多?