美文网首页
QR码设计(2)之数据编码

QR码设计(2)之数据编码

作者: 只看你一眼 | 来源:发表于2017-05-15 15:20 被阅读0次

    转载请注明出处


    1.1选择纠错级

    对数据进行编码前,需要选择数据的校正级别。QR码使用的是Reed-Solomon纠错。它是在编码数据的基础上创建纠错码字(字节)。根据纠错码字来确定QR码识别器有没有正确读取数据,并且可以纠正这些错误。纠错等级一共有四种,分别为L、M、Q、H。每个等级纠错数据的能力也不一样,见Table1所示。

    Table1

    1.2确定数据的最小版本

    每个版本所含有的信息量不同,版本越高,承载信息量就越大。在实际设计中,我们应该根据要显示的信息大小选择最小的版本。

    1.3添加模式选择代码

    各种模式代码如Table2所示

    Table2

    各种版本所对应的不同编码模式字符串长度转换二进制后位数见Table3所示。

    Table3

    1.5四种编码模式的编码过程

    1.5.1数字模式编码

    ①从左往右(或从高位到低位)3位一组

    ②将每组十进制数转换为10位二进制数

    ③末尾数字不足3位,可能是1位/2位,将其分别转换为4bits/7bits。

    Eg2.5.1字符串为4637856

    4637856→463 785 6

    463→0111001111         6->0110

    Result: 0111001111 1100010001 0110

    Eg2.5.1字符串为46378568

    4637856→463785 68

    463→011100111168→1000100

    Result: 0111001111 1100010001 1000100

    1.5.2字母数字模式编码

    ①从左往右,2位一组

    ②查Table

    3.2-4得出每一字符所对应的数字将每组转换为45进制数(满足公式a*45+b,a:高位数,b:为低位数),然后再将其转换为11bits二进制

    ③如果右边剩下一个字符,查Table

    3.2-4所得的数字将转换为6bits二进制数

    注意:字母数字模式编码所支持的字符都在Table4中,小写英文字母是不支持的。

    Table4

    Eg2.5.3UTER:H

    UTER:H→UT ER:H

    UT→30*45+29→1379→10101100011

    Result:10101100011 01010010001 11111001101

    Eg2.5.4 UTER:H%

    UTER:H%→UTER :H %

    UT→30*45+29→1379→10101100011

    %→39→100111

    Result:10101100011 01010010001 11111001101 100111

    1.5.3字节模式编码

    查JIS8表可得出其8bits二进制数。JIS8表见附录三

    1.5.4汉字模式编码,

    ①先查表Shift  JIS Kanji Code Table得汉字编码是在0x8140到0x9ffc范围内,还是0xe040到0xebbf范围内;

    ②汉字编码在0x8140到0x9ffc范围内,则汉字编码减去0x8140,如果汉字编码在0xe040到0xebbf范围内,则汉字代码减去0xc140;

    ③然后把前两位拿出来乘以0xC0,然后再加上后两位,最后转成13bit的编码。

    1.6结束符和补齐符

    1.6.1结束码

    结束码是一种标志,标志着数据编码的完成。它是由0000标志的。紧跟在数据代码之后。数据编码区此时为:数据编码=模式选择代码+字符长度代码+数据代码+结束码(0000)。

    凑8bits整(指凑足8bits整倍数):这是在数据编码编码之后的。是由一串0组成,具体在数据编码后添加多少个0,是由数据编码被8整除后所需要添加最少的0的个数。就是保证此时的数据编码是8的整数倍。

    1.6.2补齐码

    不同版本和不同纠错级,所容纳的比特数也不同,不同版本和不同纠错级所容纳的比特数见附录四。而补齐码就是在我们确定好QR码的版本和纠错级后,判断数据编码的比特数在此版本和纠错级下比特数是否相等。那么就补11101100  00010001进行填充,如果一次填充还不足的话,可循环再次填充。直到其与比特数相同

    1.7小结

    该节主要讲述了二维码的数据编码。在进行数据编码时,我们要准备好所选择的QR码版本,纠错级,编码模式,字符串字符个数,要编码的数据,结束码,凑8bits整,补齐码。可用以下公式表示:数据编码=编码模式+字符长度+编码的数据+结束码+凑8bits整+补齐码。

    备注:文中的数据编码在不同位置所表示的不一样,留给读者自己体会。

    1.8实例

    首先,我个人不喜换看太多文字,相信有和我一样的。那么在此,我就数据编码举个例子,让新手可以快速入手。

    例:对XIAOXIAOYU520进行数据编码。

    分析:XIAOXIAOYU520这一字符串中有大写字母和数字两种类型,我们可选择字母数字编码模式和字节模式,再看看其字符串长度为13。在此我们选择Q纠错级进行编码,查看附录二的表可知,应选择版本1,Q,字母数字模式编码。V1字母数字模式字符串长度用9bits表示(见Table3)。

    答:①模式选择:0010字符串长度:13→000001101

    ②XIAOXIAOYU520→XI AOXI AO YU 52 0

    →11000001100 00111011010 11000001100 00111011010

    11001000101 00011100011 000000

    ④模式选择+字符串长度+数据的编码+结束符

    0010 00000110111000001100

    00111011010 11000001100 00111011010 11001000101 000111000110000000000

    ⑤凑8bits整

    0010000001101110 00001100 00111011 01011000 00110000 11101101 01100100 0101000111000110 00000000 00000000

    ⑥V1-Q能容纳13个数据字见附录四表,即104字节。

    104-12×8=8即补偿码为11101100

    ⑦模式选择+字符串长度+数据的编码+结束符+凑8bits整+补偿码

    0010000001101110 00001100 00111011 01011000 00110000 11101101 01100100 0101000111000110 00000000 00000000 11101100

    相关文章

      网友评论

          本文标题:QR码设计(2)之数据编码

          本文链接:https://www.haomeiwen.com/subject/hdjhxxtx.html