2.2.1 文本压缩模式(TC)
码字为900时锁字该模式,分管大写字母型子模式、小写字母型子模式、混合型子模式、标点型子模式。通过标准字符集所对应的特定数值可以完成各子模式间的切换,可进行转移切换(即只对切换后的第一个码字有限,随后返回),亦可进行锁定切换(该模式切换到下一个切换前一直有效)。
每模式选择文件中出现频率较高的一种字符组成的字符集。在子模式中,GLI标准规定了文本压缩模式下每个字符所对应的值(0~29),一个字符对应一个单独的码字:
码字=30×H+L
式中:H、L依次表示字符对中的高位和低位字符值。
任何模式到文本压缩模式(TC)的锁定都是到大写字母型子模式的(Alpha)锁定。在文本压缩模式中,每一个码字用两个基为30的值表示(范围为0~29)。如果在一个字符串的发展部有奇数个基为30的值,需要用值为29的虚拟字符ps填充最后一个码字。算法如下:
(1)由到码字/30,商为高位字符值,余数的低位字符值;
(2)由字符值确定是哪模式;
(3)查找该子模式下,字符值对应的文本值,恢复原始信息。
2.2.2 字节压缩模式(BC)
当所要表示的字节总数不是6的倍数时,用码字901锁定;否则用924锁定,码字913转移为该模式,通过基256至基900的转移,将2位十六进制的数据序列转换为码字序列。算法如下:
(1)用924锁定模式
例如:一个2位十六进制的数据序列01H,02H,03H,04H,05H,06H(H代表十六进制)
1×256e5+2×256e4+3×256e3+4×256e2+5×256+6=1×900e4+620×900e3+89×900e2+74×900+846
从而表示为一个码字序列:924,1,620,89,74,846
(2)用901锁定模式
前6字节的转换方法同上,剩下的每字节对应一个码字,依次直接表示数列:01H,02H,03H,04H,05H,06H,07H,08H,04H
转换为一个码字序列:901,1,620,89,74,846,7,8,4
将收到的每5个mod900的码字转换为十进制数,继而转换为6个mod256数,分别按十六进制的数输出。若码字个数非6的倍数,则将码字个数被6整除后余下的mod900的码字直接按十六进制输出。
2.2.3 数字压缩模式(NC)
码字为902时锁定该械,通过基10至基900的换算,实现数据位数的压缩,能把约3个数据位用一个码字表示。当数字位数大于13,用数字压缩模式;数字位数小于13,用文本压缩模式。算法如下:
(1)每15个码字从左到右分为一组(每15个码字可转换为44个数字位),其最后一组码字可少于15个。
(2)对于每一组码字先执行基900至基10的转换然后去掉前导位1。
2.2.4 译码的总体流程
译码的总体流程图如图4所示。
图4 译码的总体流程图
3 有关PDF417译码过程中的几个关键问题
3.1 有关域的运算
PDF417条码码字集包含929个码字,即码字取值范围为0~928,故译码始终在有限域GF(929)中进行,超出GF(929)域的项必须通过mod(929)转化到GF(929)中。pdf417条码
错误纠正码字δ>-929,在有限域GF(929)中的负值等于该值的补数;如果δ<=-929,在有限域GF(929)中的负值=余数(δ/929)的补数。
3.2 从已知的简单模2算法到PDF417需用的模929算法方案的实现
3.2.1 本原元与本原多项式
GF(929)中的所有元素均能由3生成,故PDF417码的本原元为3,而GF(929)中以3为根的最小多项式为
m(x)=x-3
故该式为PDF417码的本原多项式。
3.2.2 求逆运算
在GF(929)中所有的除法均通过求逆得到。pdf417条码求逆即:xix-i=1--->x-i为xi的逆(x为本原元)。域中元素通过GF(929)<--->3i mod929中,即:
GF(929)--->ximod929--->x-imod929--->GF(929)
二维条码PDF417技术国内的使用正处于上升阶段。它数据容量更大,超越了字节数字的限制,条码相对尺寸小,具有抗损毁能力,不再需要后台的支持,应用范围非常广泛。同时用户可以根据需要进行前端加密,从而提高条码的保密性和防伪性。一些大厂商、大企业、大银行或是性质的部门等实力雄厚的单位是二维条码的主要使用单位。如果将此技术进一步推广,市场前景将非常可观。
本算法已通过软件实现。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-34004-2.html
俺到江浙去