当前位置:文档之家› 二维码编码过程

二维码编码过程


4. 把这些二进制连接起来: 00111001110 11100111001 000010
5. 把字符的个数转成二进制 (1-H版本9 bits ): 5 个字符,5转成 000000101
6. 在头上加上编码标识 0010 和第5步的个数编 码:
0010 000000101 0011100111011100111001000010
首先将输入的数据每三位分为一组,将每组数据转换 为10位二进制数据。余下的一或两位转换为4或7
位的二进制数据
01234567
012
0000001100
345 012 345 67
67
0101011001 1000011
0000000001010000110001001100110110100101100100101011
重复下面的两个bytes:11101100和 00010001
00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100
二维码中有四种级别的纠错,这就是为什么二维码
假如我们有个“HELLO WORLD”的字符串要编码, 根据上面的示例二,我们可以得到下面的编码
加上结束符:0000
然后8bits重排: 如果所有的编码加起来不是8个倍数我们还要在后面
加上足够的0,比如上面一共有78个bits,所以, 我们还要加上2个0,然后按8个bits分好组:
00100000 01011011 00001011 01111000 11010001
最后根据表一,将剩余字(Remainder Bits)补齐。5-Q版 本还需要补7bits,7*8=56个0.
第一步:位置探测图形 第二步:矫正图形和校准线 第三步:格式信息和版本信息 第四步:画数据 第五步:掩膜
首先,先把位置探测图形( Position Detection )
图案画在三个角上。(无论是什么版本,这个图案 的尺寸就是这么大)
首先穿插放置:把数据码和纠错码的各个码字穿插 放置。规则如下:
对于数据码:把每个块的第一个码字先拿出来按顺度排列 好
先取第一列的: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
举一个5-Q版本的例子:块数为2+2=4块,头一 组(c,k,r)=(33,15,9),的两个Blocks 中各15个bits数据 + 2* 9个bits的纠错码。第二组 同理,16+2*9=34bits
下面是一个5-Q版本的示例:二进制写起来太庞大, 所以这里用十进制写。
纠错码主要通过里德-所罗门纠错算法算出来,太 难,不做介绍。
编码完成
编码:1-H版本中的“AC-42” 1. 从字符索引表中找到 AC-42 这五个字条的索
引 (10,12,41,4,2) 2. 两两分组: (10,12) (41,4) (2) 3.把每一组转成11bits的二进制:
(10,12) (45进制)->10x45+12 = 462 (10进制)->00111001110(2进制) (41,4) ->41x45+4 =1849 -> 11100111001 (2) ->转成 000010(6位,最大44二进制位为6位)
第一步:数据编码 第二步:结束码和补齐码 第三步:纠错码 第四步:最终编码
Numeric Mode(数字编码) Alphanumeric mode(字符编码) Chinese Mode(中文编码) 其他
一共有40种版本,从1到40。每一种版本有4种纠错级。
编码:1-H版本中的“01234567”
有残缺还能扫出来,也就是为什么有人在二维码的 中心位置加入图标。
具体步骤:
首先,我们需要对数据码进行分组,也就是分成不 同的组(Block),然后对各个组进行纠错编码。 对于如何分组,参见《QR码编码规范》(QR Code Specification)中的表13-表22.
需要分多少块,每一块有多少个码字(8bits)
纠错码也是一样
和数据码取的一样,得到: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, 。。。120, 192, 178, 39, 133, 141, 236
01110010 11011100 01001101 01000011 01000000
最后,如果如果还没有达到我们最大的bits数的限 制(表七),我们还要加一些补齐码(Padding Bytes),补齐码就是重复下面的两个bytes: 11101100和 00010001 。
假设我们需要编码的是版本 1的Q纠错级,那么, 其最大需要104个bits,而我们上面只有80个 bits,所以,还需要补24个bits,也就是需要3 个Padding Bytes,我们就添加三个,于是得到 下面的编码:
在数据二进制之前加上字符个数的二进制数据(这 个二进制数据的个数由表三决定)。
1-H版本为10位,“01234567”有8个数字字符, 将0000001000添加在数据之前:
0000001000
000000110001010110011000011
最后由0 000000110001010110011000011
相关主题