搜索
您的当前位置:首页正文

QR码编码原理二(编码)

来源:榕意旅游网
编码就是把常见的数字、字符等转换成QR码的方法。说具体的编码之前,先说一下QR码的最大容量问题。 一、最大容量

QR码的最大容量取决于选择的版本、纠错级别和编码模式(Mode:数字、字符、多字节字符等)。以版本1、纠错级别为Level Q的QR码为例,可以存储27个纯数字,或17个字母数字混合字符或11个8bit字节数据。如果要存储同样多的内容同时提高纠错级别,则需要采用更高的版本。版本1~9 数据容量、纠错码容量对照如下表:

(error correcting level) L M 1 Q H L M 2 Q H L M 3 Q H L M 4 Q H L M 5 Q H L 6 M Q 62 46 136 108 76 72 88 36 64 96 144 106 322 255 175 87 64 195 154 108 60 44 134 106 74 48 36 108 86 52 64 26 48 111 82 255 202 67 50 154 122 46 34 106 84 34 26 80 64 36 44 20 36 77 58 187 149 47 35 114 90 32 24 78 62 22 16 55 44 22 28 15 26 48 34 127 101 29 20 77 61 20 14 53 42 13 9 34 28 13 17 10 16 27 17 77 63 16 10 47 38 11 7 32 26 (count of data code words) 19 16 count of EC code words 7 10 (version) (numeric) (alphanumeric) 8bit 41 34 25 20 17 14 H L M 7 Q H L M 8 Q H L M 9 Q H 60 156 124 88 66 194 154 110 86 232 182 132 100 112 40 72 108 130 48 88 132 156 60 110 160 192 139 370 293 207 154 461 365 259 202 552 432 312 235 84 224 178 125 93 279 221 157 122 335 262 189 143 58 154 122 86 64 192 152 108 84 230 180 130 98 下面,就举例说明将“ABCDE123”转换成为版本1、Level H的QR码转换方法。 二、模式标识符(Mode Indicator)

QR码的模式(Mode)就是前文提到的数字、字符、8bit 字节码、多字节码等。对于不同的模式,都有对应的模式标识符(Mode Indicator)来帮助解码程序进行匹配,模式标识符是4bit的二进制数:

1、数字模式(numeric mode ): 0001

2、混合字符模式(alphanumeric mode) : 0010 3、8bit byte mode: 0100

4、日本汉字(KANJI mode) : 1000 5、中国汉字(GB2312):1101

由于示例文本串是混合字符,因此将选择alphanumeric mode,其标识码为:0010 三、文本串计数标识符(Character count indicator)

文本串计数标识符用来存储源内容字符串的长度,在版本1-9的QR码中,文本串长度标识符自身的长度被定义为: 数字 : 10bit 混合字符 : 9bit

8bit 字节码 : 8bit 多字节码 : 8bit

在本例中,源文本串的长度为8个字符,混合字符的长度为9bit,因此将字符个数8编码为9位二进制表示:000001000

加上混合字符模式标识码,总的编码为0010 000001000 四、数据内容编码 1、数字模式下的编码

在数字模式下,数据被限制为3个数字一段,分成若干段。如:\"123456\" 将分成\"123\" 和 \"456\",分别被编码成10bit的二进制数。“123”的10bit二进制表示法为:0001111011,实际上就是二进制的123。

当数据的长度不足3个数字时,如果只有1个数字则用4bit,如果有2个数字就用7个bit来表示。

如:\"9876\"被分成\"987\"和\"6\"两段,因此被表示为\"1111011011 0110\"。 2、混合字符模式下的编码

混合字符模式编码,其字符对照表如下:

0 0 A 10 K 20 U 30 + 40 1 1 B 11 L 21 V 31 - 41 2 2 C 12 M 22 W 32 . 42 3 3 D 13 N 23 X 33 / 43 4 4 E 14 O 24 Y 34 : 44 5 5 F 15 P 25 Z 35 6 6 G 16 Q 26 [sp] 36 7 7 H 17 R 27 $ 37 8 8 I 18 S 28 % 38 9 9 J 19 T 29 * 3

编码方式为:

源码被分成两个字符一段,如下所示,每段的第一个字符乘上45,再用第二个数字相加。因此每段变成了11bit的2进制码,如果字符个数只有1个,则用6bit表示。 示例:

\"AB\" 45*10+11 461

\"CD\" 45*12+13 553

\"E1\" 45*14+1 631

\"23\" 45*2+3 93

0010 000001000 00111001101 01000101001 01001110111 00001011101

3、8bit字节数据不经编码转换直接保存。 五、编码终止符(Terminator)

如果编码后的字符长度不足当前版本和纠错级别所存储的容量,则在后续补\"0000\如果容量已满则无需添加终止符。此时得到的编码串为:

0010 000001000 00111001101 01000101001 01001110111 00001011101 0000 六、编成8bit码字(Code words)

将以上的编码再按8bit一组,形成码字(code words):

00100000 01000001 11001101 01000101 00101001 11011100 00101110 10000 如果尾部数据不足8bit,则在尾部充0:

00100000 01000001 11001101 01000101 00101001 11011100 00101110 10000000 如果编码后的数据不足版本及纠错级别的最大容量,则在尾部补充 \"11101100\" 和 \"00010001\直到全部填满。最后,版本1、Level H下的\"ABCDE123\" 的QR码是: 00100000 01000001 11001101 01000101 00101001 11011100 00101110 10000000 11101100 十进制表示法为:

32 65 205 69 41 220 46 128 236

因篇幅问题不能全部显示,请点此查看更多更全内容

Top