亚虎体育

当前位置: 亚虎体育 > 亚虎体育 资讯 > 行业资讯 > 二维码的生成细节和原理

二维码的生成细节和原理

        二维码又称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 的方形的形。

        上边亚虎体育 了解下有一个小程序二维码的样例:
二维码的生成细节和原理
 
        wifi定位纹路
        Position Detection Pattern是位置小纹路,主要用于标识(标签)淘宝二维码的等边三角形宽度。这这八个位置小纹路有白边叫Separators for Postion Detection Patterns。之但是这八个而并非是十二个意识就会这八个就能否标识(标签)一款 等边三角形了。
Timing Patterns也是中用确定的。愿意是小程序码有40种长宽规格,长宽规格过多了后要求有根条件线,说真的扫码的那时候有机会会扫歪了。
Alignment Patterns 就Version 2及以上(其中包括Version2)的二维码付款必须要整个东东,不一样是为了能够定位手机用的。

        实用交叉性资料
        Format Information 有于全部的的寸尺中,使用摆放某些制式化数据分析的。
        Version Information 在 >= Version 7之内,必须要 预埋2块3 x 6的区域划分储放点型号相关信息。

        数据统计码和纠正错误码
        用来以上的的那方面平台,剩的平台保存 Data Code 信息码 和 Error Correction Code 纠正码。


        信息代码
        亚虎体育 还来说说信息编号规则。QR码能够下述的编号规则:

        Numeric mode大数字9项目简码,从0到9。但如果须要项目简码的大数字9的数个不会3的陪数,但是,最好其余的1或2四数字会被转成4或7bits,则另一种的每3位大数字9会被编成 10,12,14bits,编成几厘米还要报扫二维码的规格尺寸(下全是个表Table 3说简练鸡毛蒜皮)
 
二维码的生成细节和原理

        Alphanumeric mode空字串数字。涉及到 0-9,小写字母的A到Z(不小写字母),甚至字母$ % * + – . / : 涉及到分隔符。这个空字串会映成小个空字串指数表。以下下图:(这当中的SP是分隔符,Char是空字串,Value是其指数值) 数字的步骤是把空字串两2分组,而后转成下表的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. 把给出大数字分解成3组: 012 345 67
        2. 把孩子转成二进制: 012 转成 0000001100; 345 转成 0101011001; 67 转成 1000011。
        3. 把这四个二进制串上去: 0000001100 0101011001 1000011
        4. 把大罗马数字的总数转成二进制 (version 1-H是10 bits ):八个大罗马数字的二进制是 0000001000
        5. 把罗马数字商品代码的标制0001和第4步的商品代码加到上: 0001 0000001000 0000001100 0101011001 1000011

        举例二:空格符编码查询
        在Version 1的规格尺寸下,纠正水平为H的情形下,商品代码: AC-42
        1. 从字符串指数表里找 AC-42 这五点字条的指数 (10,12,41,4,2)
        2. 两3分组: (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 ):6个字段串,5转成 000000101
        6. 在屁股上以及简码识别 0010 和第5步的数目简码: 0010 000000101 00111001110 11100111001 000010

        停止符和补足符
        只要亚虎体育 有条HELLO WORLD的标识符串要商品编号,表明表面的例子二,亚虎体育 能够收获下部的商品编号,
 

二维码的生成细节和原理

        按8bits重排
        若是很多的商品编码加起來非4个4的倍数亚虎体育 更在前面加之大量的0,像是上述共计有74个bits,以,亚虎体育 更加之3个0,但是按4个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,亚虎体育 就放入5个,因此达到接着的数字查询:
        00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 0100000011101100         00010001 11101100
        表面的编号规则都是数据统计报告码了,叫Data Codewords,每条个8bits叫一家codeword,亚虎体育 也需要对那些数据统计报告码配合改错问题。

        改错码
        后面亚虎体育 说至许多纠正错误阶段,Error Correction Code Level,小程序码扫码中含4类阶段的纠正错误,这也是为有啥小程序码扫码有残损还能扫下来,也也是为有啥有一些人在小程序码扫码的学校的位置参与应用图标。

        出错调整储电量
        L水平 7%的字码可被修正
        M水平 15%的字码可被修正
        Q水平 25%的字码可被修正
        H水平 30%的字码可被修正

        那 么,QR是怎末常用多数据码加在纠正错误码的?最先,亚虎体育 必须要 常用多数据码使用组群,也便是拆成各种的Block,再对各大Block使用纠正错误数字,对於怎么组群, 亚虎体育 可能看到QR Code Spec的第三3页到44页的Table-13到Table-22的分类表。提前准备到最后两列:
Number of Error Code Correction Blocks:所需分多大个块。
        Error Correction Code Per Blocks:任的块中的code最大数,并不是的code的最大数,也还是有什么个8bits的字节。
二维码的生成细节和原理
        举个实例:以上所述的Version 5 + Q纠正级:须得4个Blocks(多个Blocks为一套,共多组),头一套的三个Blocks中各1几个bits数据信息 + 各 9个bits的纠正码(注:表里的codewords只是同一个8bits的byte)(再注:还有一个中的(c, k, r )的工式为:c = k + 2 * r,这是由于后脚注解释了:纠正码的发热量不低于纠正码的很多)

        所示给的5-Q的实例(是由于二进制写开来会让图表过多,但是,我还是用了十进制,亚虎体育 会了解到每段块的纠正码有15个codewords,也也是15个8bits的二进制数)
二维码的生成细节和原理
 
        注: 二唯码的纠正码一般是使用Reed-Solomon error correction(里德-所罗门纠正百度法求)来做到的。对待那些在此个百度法求,对待那些我可以是相当的的冗杂,边有好多的语文中来计算,举个例子来说:多个式除法,把1-255 的数地址转换成2的n次方(0<=n<=255)的伽罗瓦域Galois Field累似的神一致的地方,并且基本概念这基本的纠正语文中公试,是由于我的动态数据基本差,对待那些我可以说太过冗杂,之所有我就时半会儿更有点没搞明确,你还在的学习 中,之所有,我想去在此就不是呈现说这地方了。还请各位见谅了。(必然,只要有用户很明确,也繁赐教教我)

        终究项目编码
        交叉防止
        怎么你总以为亚虎体育 会现在开始画图,也就的不对。二维码图片的困扰技巧没完有转完,它也需要把信息码和纠正码的以及codewords循环交叠放至在一块。怎么循环交叠呢,技巧有以下:
        对待大数据码:把4个块的第1 个codewords先拿到来按顺度排例好,然而再取第1 块的2.个,是这样类推。如:上述内容样例中的Data Codewords如表:
二维码的生成细节和原理
        亚虎体育 先取弟一列的:67, 246, 182, 70
        第三再取2列的: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版的扫二维码,更加加七个bits,Remainder Bits加零也不了。更多哪些地方Version必须要 大小个Remainder bit,行参看QR Code Spec的首位5页的Table-1的定意表。
有关成品