博舍

二维码编码原理 生成二维码的过程属于

二维码编码原理

二维码又称QRCode,QR全称QuickResponse,是一个近几年来移动设备上超流行的一种编码方式,它比传统的BarCode条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,

QR码的基本结构

位置探测图形、位置探测图形分隔符、定位图形:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;校正图形:规格确定,校正图形的数量和位置也就确定了;格式信息:表示改二维码的纠错级别,分为L、M、Q、H;

版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本每边增加4个模块。

数据和纠错码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)。

二维码的信息结构

“码元结构”是指二维码中的码元数。从版本1(21码元×21码元)开始,在纵向和横向各自以4码元为单位递增,一直到版本40(177码元×177码元)。QR码的各个版本结合数据量、字符类型和纠错级别,均设有相对应的最多输入字符数。也就是说,如果增加数据量,则需要使用更多的码元来组成QR码,QR码就会变得更大。

例如,需要输入的数据为100位的数字时,通过以下步骤来选定。1.假设要输入的数据种类为“数字”2.从“L”“M”“Q”“H”中选择纠错级别。(假设选择“M”)3.查看下表,先从数字列找出数字为100以上且接近100的,其次找出纠错级别“M”,两者交叉的部分就是最佳版本。

通过下面的计算为每个字符类型,总比特数的计算方法。

QR码的纠错

QR码的编码过程

首先查看模式编码:实例:数字模式:数据可以按照一种模式进行编码,以便进行更高效的解码,例如:对数据:01234567编码(版本1-H),1)分组:012345672)转成二进制:012→0000001100345→010101100167→10000113)转成序列:0000001100010101100110000114)字符总数转成二进制(可以查看表3字符计数位数数字模式为10位所以是10位2进制数):8→00000010005)加入模式指示符(上图数字)0001:00010000001000000000110001010110011000011数字字母模式两两分组首字符所对应的数值*45+第二个字符转换成11位2进制数如果末尾为1个字符则直接转换为6位二进制数对于字节、中文、日文等只是分组的方式、模式等内容有所区别。基本方法是一致的。

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

编成8bit码字

将以上的编码再按8bit一组,形成码字:000100000010000000001100010101100110000110000如果尾部数据不足8bit,则在尾部充0:000100000010000000001100010101100110000110000000如果编码后的数据不足版本及纠错级别的最大容量,则在尾部补充“11101100”和“00010001”,直到全部填满。所以数字01234567,版本1-H(72位数据位数)的最后qr码为:000100000010000000001100010101100110000110000000001011101000000011101100

原理参考文档:

https://blog.csdn.net/u012611878/article/details/53167009

QRCode编码标准:

https://www.docin.com/p-366731780.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇