识别二维码的原理是什么,二维码原理( 三 )


3、对原字符串编码,将HELLO WORLD两两分组得到(H,E)、 (L,L)、(O, )、(W,O)、(R,L)、(D);根据索引表找到每个字符对应的值,得到(17,14)、 (21,21)、(24,36)、(32,24)、(27,21)、(13);将每组数字先转成45进制、再将结果转成长度11的二进制串,长度不足的补0 。
例如(17,14) 转成45进制为17*45 14=779,再将779转成二进制 1100001011,左边补1个0得到01100001011,如果最后一组是单独一个,则转成6位的二进制串,所以字符串HELLO WORLD经过字符编码之后,再加上前面计算好的模式指示符和字符计数指示符之后最终得到0010 000001011 01100001011 01111000110 10001011100 10110111000 10011010100 001101 。
4、 在确定二维码的版本和纠错级别以后,字符串的编码结果应该是一个固定长度的二进制串,如果我们计算的结果长度不够就需要进行不起操作 。例如确定二维码的版本1和纠错级别Q,则最终二进制串的长度需要达到104位 。在第3步中我们得到的最二进制串的长度为74,所以需要进行补齐操作 。首先末尾可以至多追加4个0,接着末尾补齐更多的0直到长度是8的倍数,如追加4个0后长度达到78,要达到8的倍数则还需要补2个0;如果这时候长度还没有达到目标,那就在末尾循环追加固定的二进制码11101100 00010001直到达到目标长度 。
最后来看一下HELLO WORLD经过字符编码之后结果掩码图源字符串在经过编码之后被转换成二进制的数字串,根据这个二进制数字串画出来的二维码通常会存在黑白色块分布不均的情况,这会导致二维码容易扫描失败 。为了解决这个问题,官方提供了8种掩码方案:我们需要选择一个掩码图与我们生成的二维码再做一次异或操作,这样黑白色块分布就会更加的均匀 。

推荐阅读