看毛片的网站丨av不卡国产在线观看丨国模雨珍浓密毛大尺度150p丨人妻少妇屁股翘水多视频丨狠狠干天天操丨黄色片在线网站丨久久久久99精品成人片三人毛片丨成人精品gif动图一区丨aaaa毛片丨欧美放荡的少妇丨欧美日韩国产高清视频丨欧美色xxxxx丨国产精品免费无码二区丨98在线视频噜噜噜国产丨久久精品国产日本波多野结衣丨国产黄大片丨婷婷色婷婷开心五月四房播播丨一本之道高清狼码丨亚洲色大成网站久久久丨亚洲裸体大白屁股xxx

當前位置: 首頁 > 新聞資訊 > 行業資訊 > 二維碼的生成細節和原理

二維碼的生成細節和原理

        二維碼又稱QR Code,QR全稱Quick Response,是一個近幾年來移動設備上超流行的一種編碼方式,它比傳統的Bar Code條形碼能存更多的信息,也能表示更多的數據類型:比如:字符,數字,日文,中文等等。這兩天學習了一下二維碼圖片生成的相關細節,覺得這個玩意就是一個密碼算法,在此寫一這篇文章 ,揭露一下。供好學的人一同學習之。

        基礎知識
        首先,我們先說一下二維碼一共有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 的正方形。

        下面我們看看一個二維碼的樣例:
二維碼的生成細節和原理
 
        定位圖案
        Position Detection Pattern是定位圖案,用于標記二維碼的矩形大小。這三個定位圖案有白邊叫Separators for Postion Detection Patterns。之所以三個而不是四個意思就是三個就可以標識一個矩形了。
Timing Patterns也是用于定位的。原因是二維碼有40種尺寸,尺寸過大了后需要有根標準線,不然掃描的時候可能會掃歪了。
Alignment Patterns 只有Version 2以上(包括Version2)的二維碼需要這個東東,同樣是為了定位用的。

        功能性數據
        Format Information 存在于所有的尺寸中,用于存放一些格式化數據的。
        Version Information 在 >= Version 7以上,需要預留兩塊3 x 6的區域存放一些版本信息。

        數據碼和糾錯碼
        除了上述的那些地方,剩下的地方存放 Data Code 數據碼 和 Error Correction Code 糾錯碼。


        數據編碼
        我們先來說說數據編碼。QR碼支持如下的編碼:

        Numeric mode數字編碼,從0到9。如果需要編碼的數字的個數不是3的倍數,那么,最后剩下的1或2位數會被轉成4或7bits,則其它的每3位數字會被編成 10,12,14bits,編成多長還要看二維碼的尺寸(下面有一個表Table 3說明了這點)
 
二維碼的生成細節和原理

        Alphanumeric mode字符編碼。包括 0-9,大寫的A到Z(沒有小寫),以及符號$ % * + – . / : 包括空格。這些字符會映射成一個字符索引表。如下所示:(其中的SP是空格,Char是字符,Value是其索引值) 編碼的過程是把字符兩兩分組,然后轉成下表的45進制,然后轉成11bits的二進制,如果最后有一個落單的,那就轉成6bits的二進制。而編碼模式和 字符的個數需要根據不同的Version尺寸編成9, 11或13個二進制(如下表中Table 3)


        Byte mode, 字節編碼,可以是0-255的ISO-8859-1字符。有些二維碼的掃描器可以自動檢測是否是UTF-8的編碼。

        Kanji mode這是日文編碼,也是雙字節編碼。同樣,也可以用于中文編碼。日文和漢字的編碼會減去一個值。如:在0X8140 to 0X9FFC中的字符會減去8140,在0XE040到0XEBBF中的字符要減去0XC140,然后把結果前兩個16進制位拿出來乘以0XC0,然后再 加上后兩個16進制位,最后轉成13bit的編碼。

        如下圖示例:
二維碼的生成細節和原理

        Extended Channel Interpretation (ECI) mode主要用于特殊的字符集。并不是所有的掃描器都支持這種編碼。

        Structured Append mode用于混合編碼,也就是說,這個二維碼中包含了多種編碼格式。

        FNC1 mode這種編碼方式主要是給一些特殊的工業或行業用的。比如GS1條形碼之類的。

        簡單起見,后面三種不會在本文中討論。

        下面兩張表中,
        Table 2 是各個編碼格式的“編號”,這個東西要寫在Format Information中。注:中文是1101
        Table 3 表示了,不同版本(尺寸)的二維碼,對于,數字,字符,字節和Kanji模式下,對于單個編碼的2進制的位數。(在二維碼的規格說明書中,有各種各樣的編碼規范表,后面還會提到)
 
二維碼的生成細節和原理

        下面我們看幾個示例,
        示例一:數字編碼
        在Version 1的尺寸下,糾錯級別為H的情況下,編碼: 01234567
        1. 把上述數字分成三組: 012 345 67
        2. 把他們轉成二進制: 012 轉成 0000001100; 345 轉成 0101011001; 67 轉成 1000011。
        3. 把這三個二進制串起來: 0000001100 0101011001 1000011
        4. 把數字的個數轉成二進制 (version 1-H是10 bits ):8個數字的二進制是 0000001000
        5. 把數字編碼的標志0001和第4步的編碼加到前面: 0001 0000001000 0000001100 0101011001 1000011

        示例二:字符編碼
        在Version 1的尺寸下,糾錯級別為H的情況下,編碼: AC-42
        1. 從字符索引表中找到 AC-42 這五個字條的索引 (10,12,41,4,2)
        2. 兩兩分組: (10,12) (41,4) (2)
        3.把每一組轉成11bits的二進制:
        (10,12) 10*45+12 等于 462 轉成 00111001110
        (41,4) 41*45+4 等于 1849 轉成 11100111001
        (2) 等于 2 轉成 000010
        4. 把這些二進制連接起來:00111001110 11100111001 000010
        5. 把字符的個數轉成二進制 (Version 1-H為9 bits ):5個字符,5轉成 000000101
        6. 在頭上加上編碼標識 0010 和第5步的個數編碼: 0010 000000101 00111001110 11100111001 000010

        結束符和補齊符
        假如我們有個HELLO WORLD的字符串要編碼,根據上面的示例二,我們可以得到下面的編碼,
 

二維碼的生成細節和原理

        按8bits重排
        如果所有的編碼加起來不是8個倍數我們還要在后面加上足夠的0,比如上面一共有78個bits,所以,我們還要加上2個0,然后按8個bits分好組:
00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000

        補齊碼(Padding Bytes)
        最后,如果如果還沒有達到我們最大的bits數的限制,我們還要加一些補齊碼(Padding Bytes),Padding Bytes就是重復下面的兩個bytes:11101100 00010001 (這兩個二進制轉成十進制是236和17,我也不知道為什么,只知道Spec上是這么寫的)關于每一個Version的每一種糾錯級別的最大Bits限 制,可以參看QR Code Spec的第28頁到32頁的Table-7一表。

        假設我們需要編碼的是Version 1的Q糾錯級,那么,其最大需要104個bits,而我們上面只有80個bits,所以,還需要補24個bits,也就是需要3個Padding Bytes,我們就添加三個,于是得到下面的編碼:
        00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 0100000011101100         00010001 11101100
        上面的編碼就是數據碼了,叫Data Codewords,每一個8bits叫一個codeword,我們還要對這些數據碼加上糾錯信息。

        糾錯碼
        上面我們說到了一些糾錯級別,Error Correction Code Level,二維碼中有四種級別的糾錯,這就是為什么二維碼有殘缺還能掃出來,也就是為什么有人在二維碼的中心位置加入圖標。

        錯誤修正容量
        L水平 7%的字碼可被修正
        M水平 15%的字碼可被修正
        Q水平 25%的字碼可被修正
        H水平 30%的字碼可被修正

        那 么,QR是怎么對數據碼加上糾錯碼的?首先,我們需要對數據碼進行分組,也就是分成不同的Block,然后對各個Block進行糾錯編碼,對于如何分組, 我們可以查看QR Code Spec的第33頁到44頁的Table-13到Table-22的定義表。注意最后兩列:
Number of Error Code Correction Blocks:需要分多少個塊。
        Error Correction Code Per Blocks:每一個塊中的code個數,所謂的code的個數,也就是有多少個8bits的字節。
二維碼的生成細節和原理
        舉個例子:上述的Version 5 + Q糾錯級:需要4個Blocks(2個Blocks為一組,共兩組),頭一組的兩個Blocks中各15個bits數據 + 各 9個bits的糾錯碼(注:表中的codewords就是一個8bits的byte)(再注:最后一例中的(c, k, r )的公式為:c = k + 2 * r,因為后腳注解釋了:糾錯碼的容量小于糾錯碼的一半)

        下圖給一個5-Q的示例(因為二進制寫起來會讓表格太大,所以,我都用了十進制,我們可以看到每一塊的糾錯碼有18個codewords,也就是18個8bits的二進制數)
二維碼的生成細節和原理
 
        注: 二維碼的糾錯碼主要是通過Reed-Solomon error correction(里德-所羅門糾錯算法)來實現的。對于這個算法,對于我來說是相當的復雜,里面有很多的數學計算,比如:多項式除法,把1-255 的數映射成2的n次方(0<=n<=255)的伽羅瓦域Galois Field之類的神一樣的東西,以及基于這些基礎的糾錯數學公式,因為我的數據基礎差,對于我來說太過復雜,所以我一時半會兒還有點沒搞明白,還在學習 中,所以,我在這里就不展開說這些東西了。還請大家見諒了。(當然,如果有朋友很明白,也繁請教教我)

        最終編碼
        穿插放置
        如果你以為我們可以開始畫圖,你就錯了。二維碼的混亂技術還沒有玩完,它還要把數據碼和糾錯碼的各個codewords交替放在一起。如何交替呢,規則如下:
        對于數據碼:把每個塊的第一個codewords先拿出來按順度排列好,然后再取第一塊的第二個,如此類推。如:上述示例中的Data Codewords如下:
二維碼的生成細節和原理
        我們先取第一列的:67, 246, 182, 70
        然后再取第二列的:67, 246, 182, 70, 85,246,230 ,247
        如此類推:67, 246, 182, 70, 85,246,230 ,247 ……… ……… ,38,6,50,17,7,236

        對于糾錯碼,也是一樣:
二維碼的生成細節和原理
        和數據碼取的一樣,得到:213,87,148,235,199,204,116,159,…… ……39,133,141,236
       
         然后,再把這兩組放在一起(糾錯碼放在數據碼之后)得到:
        67, 246, 182, 70, 85, 246, 230, 247, 70, 66, 247, 118, 134, 7, 119, 86, 87, 118, 50, 194, 38, 134, 7, 6, 85, 242, 118, 151, 194, 7, 134, 50, 119, 38, 87, 16, 50, 86, 38, 236, 6, 22, 82, 17, 18, 198, 6, 236, 6, 199, 134, 17, 103, 146, 151, 236, 38, 6, 50, 17, 7, 236, 213, 87, 148, 235, 199, 204, 116, 159, 11, 96, 177, 5, 45, 60, 212, 173, 115, 202, 76, 24, 247, 182, 133, 147, 241, 124, 75, 59, 223, 157, 242, 33, 229, 200, 238, 106, 248, 134, 76, 40, 154, 27, 195, 255, 117, 129, 230, 172, 154, 209, 189, 82, 111, 17, 10, 2, 86, 163, 108, 131, 161, 163, 240, 32, 111, 120, 192, 178, 39, 133, 141, 236
        
        這就是我們的數據區。

        Remainder Bits
        最后再加上ReminderBits,對于某些Version的QR,上面的還不夠長度,還要加上Remainder Bits,比如:上述的5Q版的二維碼,還要加上7個bits,Remainder Bits加零就好了。關于哪些Version需要多少個Remainder bit,可以參看QR Code Spec的第15頁的Table-1的定義表。

相關產品

一本一久本久a久久精品综合 | 日韩精品免费一区二区三区 | 成人国产一区二区三区精品 | 国产熟妇人妻精品一区二区动漫 | 亚洲精品无码不卡在线播he | 亚洲aⅴ无码天堂在线观看 国产精品人妻一区夜夜爱 futa硬了蹭蹭喘息h | 亚洲精品1区 | 曰曰摸夜夜添夜夜添高潮出水 | 五月综合激情网 | 免费无码又爽又黄又刺激网站 | 天天色天天草 | 久久精品苍井空精品久久 | 人妻无码一区二区三区 | 牲欲强的熟妇农村老妇女视频 | 91久久综合亚洲鲁鲁五月天 | 少妇性l交大片毛多 | 亚洲一级黄色 | 亚洲欧美综合精品二区 | 精彩国产萝视频在线 | 国产亚洲精品久久久久久久久久久久 | 丰满少妇高潮叫久久国产 | 亚洲国产精品一区二区久久 | 国产乱码字幕精品高清av | 久久一区二区三 | 国产无遮挡免费观看视频网站 | 亚洲人成未满十八禁网站 | 亚洲女人天堂成人av在线 | 黑人巨大精品欧美一区二区桃花岛 | 亚洲欧美日韩国产综合 | 日本在线视频一区 | 欧美成人免费观看视频 | 国产卡一卡二卡三卡免费 | 欧美激情一区二区在线 | 午夜少妇性影院私人影院 | 精品国产一区二区三区久久狼黑人 | 天天干天天上 | 韩国三级hd中文字幕叫床浴室 | 亚洲精品高清国产一线久久 | 爱情岛av亚洲论坛自拍品质 | 高清在线一区 | 免费在线观看毛片 | 丰腴饱满的极品熟妇 | 欧美乱大交做爰xxxⅹ性黑人 | 456欧美成人免费视频 | 国产免费女女脚奴视频网 | 内射囯产旡码丰满少妇 | 国产精品视频永久免费播放 | 天堂中文网 | 亚洲精品午睡沙发系列 | 亚洲理论片| 少妇一区二区三区 | 影视先锋av资源噜噜 | 成人国产一区二区精品小说 | 日本丰满大乳免费xxxx | 巨肉高h文从头做到尾肉短文 | 国产高清黄色片 | 天下第一社区视频www日本 | 毛片高清 | 成人免费大片黄在线观看com | 国内精品久久久久久久97牛牛 | 女人被狂c到高潮视频网站 黄桃av无码免费一区二区三区 | 久久99久久99精品免视看看 | 国产又色又爽又黄又免费文章 | 亚洲专区一区 | 成人免费无码大片a毛片18 | 国产高清一国产av | 亚洲精品国产精品成人不卡 | 亚洲一卡久久4卡5卡6卡7卡 | xxxxx色 | 国产亚洲精品线视频在线 | 午夜精品999| 无码专区人妻系列日韩精品 | 国产中年熟女高潮大集合 | 欧美成人ⅴideosxxxxx | 红桃av一区二区三区在线无码av | 玩弄少妇的肉体k8经典 | 国产污在线观看 | 蜜桃少妇av久久久久久久 | 日本偷偷操 | 人妻无码一区二区三区欧美熟妇 | 日韩精品免费一区二区夜夜嗨 | 欧美人与动牲交欧美精品 | 中文天堂在线视频 | 国产欧美日韩综合在线成 | 丰满女人与性猛交视频 | 欧美另类视频在线观看 | 中文人妻无码一区二区三区在线 | 亚洲中文字幕av无码区 | 18国产免费视频 | 午夜无码一区二区三区在线 | 欧美性猛交乱大交xxxx | avt天堂网| 在线观看日本高清=区 | 亚洲免费av网站 | 亚洲国产成人久久综合碰碰免 | 久久中文字幕伊人小说小说 | 亚洲欧美另类在线图片区 | 中文字幕国产专区 | 日韩久久免费 | 一本一道久久综合狠狠老精东影业 | 国产99久久久国产 | 人妻熟女 视频二区 视频一区 | 我和房东少妇激情 | 亚洲男男网站 | 午夜影剧院 | 亚洲最大福利视频网 | 青青草自拍视频 | 人妻无码中文字幕永久在线 | 最新黄色av网站 | 午夜xxx | 国产做无码视频在线观看 | 三级毛片视频 | 久久久久亚洲视频 | 区二区三区玖玖玖 | 精品国精品国产自在久国产应用男 | 色噜噜日韩精品欧美一区二区 | 国产美女午夜福利视频 | 国产免费又黄又爽又色毛 | 深夜福利视频免费观看 | 亚洲成av 人片在线观看无码 | 久久久网页 | 国精产品99永久一区一区 | 二区视频在线 | 成人区亚洲区无码区在线点播 | 嫩草影院av | 春色校园激情综合在线 | 午夜毛片在线 | 亚洲国产一区二区三区亚瑟 | 青青草97| 狠狠躁夜夜躁青青草原软件 | 亚洲精品综合在线影院 | 日韩欧美视频二区 | 国产精品无码一区二区桃花视频 | 国产视频三级 | 同性做爰猛烈全过程 | 国产欧美69久久久久久9龙 | 日日干夜夜操 | 日韩精品一区二区三区不卡 | 天天色天天操天天 | 国产 欧美 日韩 在线 | 黄页在线播放 | 精品毛片一区二区 | 99精品视频在线观看 | 成年人网站在线 | 国内精品偷拍 | 激情欧美一区二区免费视频 | 国内精品久久久久久久影视蜜臀 | 国产免费一区二区三区 | 色一情一交一乱一区二区三区 | 秋霞二区 | 免费床视频大全叫不停欧美 | 99国产一区二区 | 久久精品国产清高在天天线 | jizzjizz日本免费视频 | 激情综合色五月丁香六月亚洲 | 色爱无码av综合区 | av无码人妻无码男人的天堂 | 乌克兰av在线 | 日本免费高清一本视频 | 亚洲91在线 | 中文字幕欧美日韩va免费视频 | 人人插人人插人人爽 | 日韩欧美在线一区 | 精品国产免费人成网站 | 亚洲精品成人久久av | 免费视频毛片 | 美女视频毛片 | 想看一级黄色片 | 正在播放熟妇群老熟妇456 | 欧美精品成人 | 偷窥日本少妇撒尿chinese | 夜夜夜操| 极品美女aⅴ在线观看 | 激情网av | 天堂亚洲2017在线观看 | 看免费真人视频网站 | 国模冰莲大胆自慰难受 | 亚洲色图com | 涩视频在线观看 | jlzzjizz在线播放观看 | 日欧美女人 | 欧美视频在线观看一区二区 | 日本xxx裸体xxxx偷窥 | 无码熟妇人妻av在线影片 | 色婷婷香蕉在线 | 亚洲精品一卡二卡 | аⅴ资源中文在线天堂 | 日本毛茸茸bbbbb潮喷 | 久久久久日本精品人妻aⅴ毛片 | 男女做爰全过程免费视频播放 | 国产精品天堂 | 国产片一区二区三区 | 国产熟妇高潮呻吟喷水 | 色哟哟国产seyoyo| 午夜三级a三级三点窝 | 久久激情综合狠狠爱五月 | 国产精品无码专区在线观看不卡 | 国产精品亚洲精品日韩已方 | 精品国产一区二区三区在线观看 | 色月阁| 玩弄放荡人妻少妇系列视频 | 国产精品久久久久久久9999 | 国产精品久久久久久影视 | 日本少妇春药特殊按摩3 | 亚洲gv永久无码天堂网 | 精品人妻无码视频中文字幕一区二区三区 | 欧美区视频| 五月天堂色 | www亚洲综合 | 久久精品卡二卡三卡四卡 | 人妻熟妇乱又伦精品视频 | 欧美性视频一区二区 | 2021亚洲国产精品无码 | 色悠久久久久综合网香蕉 | 国产成人69视频午夜福利在线观看 | 国产欧美日韩视频在线 | 极品销魂美女一区二区 | 日本中出中文字幕 | 亚洲精品高清在线观看 | 日本亲子乱子伦xxxx30路 | 日韩美女免费视频 | 99成人在线视频 | 四川50岁熟妇大白屁股真爽 | 亚洲成在人线视av | 香港三级午夜理伦三级 | 少妇高潮太爽了在线观看 | 强开小嫩苞一区二区三区网站 | 日本视频免费高清一本18 | 欧美成人久久久免费播放 | 五月色综合 | 四虎精品寂寞少妇在线观看 | 肉肉av福利一精品导航 | 91精品国产视频 | 尤物99国产成人精品视频 | 国产精品 无码专区 | 亚洲免费观看av | а√在线中文网新版地址在线 | 日本www网站 | a级一级黄色片 | 日本美女一级片 | 国产人成看黄久久久久久久久 | 69激情网 | 人妻少妇屁股翘水多视频 | 日本国产精品 | 国产亚洲美女精品久久久久 | 顶级毛茸茸aaahd极品 | 日本高清不卡中文字幕视频 | 无码人妻精品一区二区三区东京热 | av av在线| 脱了美女内裤猛烈进入gif | 女医生大乳奶水 | 97人人爱 | 日韩精品在线看 | 亚洲69av| 久草视频免费播放 | 日日夜夜精品免费 | 国产一级 黄 片 | 精品av中文字幕在线毛片 | 欧美精品色婷婷五月综合 | 亚洲乱码一二三四区 | 精品无码中文字幕在线 | 麻豆果冻传媒2021精品传媒一区下载 | 女性自慰网站免费看ww | 亚洲爆乳成av人在线视菜奈实 | 欧美日韩成人 | 性一交一乱一乱视频 | 一个人看的免费高清www视频 | 五月婷婷一区二区 | 国产福利久久 | www.猫咪av| 成人动漫在线播放 | 国产热re99久久6国产精品 | jizzzz成熟丰满韩国女视频 | 国内精品人妻无码久久久影院导航 | 一边捏奶头一边高潮视频 | 黑人av| 亚洲国产欧美中文丝袜日韩 | 亚洲 美腿 欧美 偷拍 | 欧美一级片在线观看 | 国产精品久久久久电影网 | 久久久成人精品视频 | 国产一区二区在线精品 | 国产精品久久这里只有精品 | 992tv又爽又黄的免费视频 | 未满十八18禁止免费网站 | 伊甸园永久入口www 亚洲国产精品隔壁老王 | 欧av在线| 激情视频网站 | 色伊人影院 | 黑色丝袜无码中中文字幕 | 亚洲最大黄色 | 亚洲天堂男人的天堂 | 国产精品爱久久久久久久小说 | 五月丁香激激情亚洲综合 | 一本到加勒比系列在线 | 成人爱爱 | 日日橹狠狠爱欧美视频 | 性猛交xxxx乱大交孕妇2十 | 草逼视频网 | 午夜少妇影院 | 国产剧情国产精品一区 | 日韩在线永久免费播放 | 欧美成人免费在线 | 五月狠狠亚洲小说专区 | 免费av一级 | 中国大陆精品视频xxxx | 丁香六月色| 五月激情小说 | 7777精品伊人久久久大香线蕉 | 国产99视频精品免费视看6 | 曰批视频免费30分钟成人 | 天堂在线视频免费 | 自拍视频一区二区三区 | 国产福利免费视频 | 老熟女乱子伦 | 欧美精品第二页 | 麻豆三级在线观看 | 亚洲蜜桃精久天干天干天啪啪夜l | 草久免费视频 | 国产极品久久久久久久久 | 免费无码又爽又刺激软件下载 | 日日操夜夜干 | 国产伦久视频免费观看 视频 | 日韩免费网 | 欧美成人xxx| 亚洲精品久久久www小说 | 亚洲国产成人久久综合区 | 无码人妻一区二区三区精品视频 | 国产自产才c区 | 91精品久久久久久久久中文字幕 | 四虎激情 | 激情久久久久久久 | 人妻无码一区二区三区欧美熟妇 | 熟女人妻视频 | 日本高清一二三区视频在线 | 中文人妻熟女乱又乱精品 | 99r热| 亚洲精品中文字幕一区二区三区 | 粗大的内捧猛烈进出在线视频 | 欧美专区另类专区在线视频 |