已阅读5页,还剩49页未读, 继续免费阅读
(通信与信息系统专业论文)基于存储函数变换的pdf417码生成的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 条码技术自问世2 0 多年来发展迅速,在各个行业得到了广泛应用随着科技 的发展,一维条码由于受到信息容量的限制和使用时对数据库的依赖,已经不 能适应社会的需要,于是二维条码就应运而生。二维码为上世纪9 0 年代初美国 军方为军需物流供应而设计的矩阵形式的编码结构,后将其中的一部分推广为 民用,在1 9 9 3 年形成c e 标准。其中以p d f 4 1 7 的应用最为广泛。 现在对p d f 4 1 7 码的生成是在计算机上通过软件进行编码生成,导致在一些 没有计算机又需要实时生成二维条码的场合得使用时受到制约。另外二维条码 不是一项专用信息安全技术,本身所具有的安全能力有限,一旦攻击者掌握编 码、译码方法就可以很容易地伪造或识别二维条码。这也妨碍了二维条码在一 些对信息安全要求较高的领域中的应用。通过反复论证,本文提出了二维条码 生成的一种新的设计方案:基于存储函数变换的p d f 4 1 7 码的生成。该方案能够 将编码和加密过程中的大量幂次、乘法运算简化成快速查表运算,可在a v r 高 速嵌入式单片机上实现p d f 4 1 7 码的生成。 本文简要介绍了p d f 4 1 7 码的特点和编码规则,阐述了用计算机实现编码的 原理和方法,并给出可实现编码的程序设计方法。独特地运用了存储器函数变 换的原理,实现了p d f 4 1 7 纠错编码,分析p d f 4 1 7 码的三种防伪方案,设计了 用智能卡和存储器函数变换技术相结合实现对p d f 4 1 7 码加密和解密。独特地设 计了基于a v r 和存储函数的p d f 4 1 7 码生成系统,给出了系统工作流程和各模块 主要程序设计。 关键字:p d f 4 1 7 ,存储器函数变换,编码,嵌入式系统,数据安全, 数据生成 a b s t r a c t a b s t r a c t t h eb a r c o d et e c h n o l o g yh a sb e e nd e v e l o p i n gr a p i d l ys i n c e2 0 t hc e n t u r ya n dh a s b e e nu s e di nv a r i o u sa p p l i c a t i o nf i e l d 。w i t ht h ed e v e l o p m e n to ft e c h n o l o g y , t h e 1d b a r c o d ec a n n ol o n g e rm e e tt h es o c i e t y sn e e d sb e c a u s eo fi t sl i m i t a r yi n f o r m a t i o n c a p a c i t ya n dd e p e n d e n c eo nt h ed a t a b a s e ,s ot h ev a r i o u s2 db a r c o d e sc a m ei n t ou s e , a m o n gw h i c ht h ep d f 4 17b a r c o d ei sm o s tw i d e l yu s e d t h i sp a p e rc o v e r st h ec h a r a c t e r i s t i c sa n db a s i cp r i n c i p l e so ft h ed e s i g no f t w o d i m e n s i o n a lb a rc o d ei n c l u d i n ga ne n c o d i n gm e t h o d 。b e s i d e sab r i e fi n t r o d u c t i o n o fs t o r a g ef u n c t i o n ,t h i sp a p e ra l s og i v e sat h o r o u g ha n a l y s i so fs t o r a g ef u n c t i o ni n t w o d i m e n s i o n a lb a rc o d ep d f 417 ,t h i sp a p e rg i v e st h r e ed e t a i l e do fe n c i p h e ri nc o d e p d f 417 a n dt h em e t h o do fe n c i p h e ra n dd e c i p h e rb ys m a r tc a r da n ds t o r a g ef u n c t i o n , a nd a t ag e n e r a t i o ns y s t e mb yp d f 417t w o - d i m e n s i o n a lb a r c o d e si sa l s od e s i g n e d h e r eb a s e do na v ra n ds t o r a g ef u n c t i o n ,a n dd e t a i l e do fi t sa p p l i c a t i o n k e yw o r d :p d f 4 1 7 ,s t o r a g ef u n c t i o n ,e n c o d i n g ,e m b e d d e ds y s t e m , d a t as e c u r i t y ,d a t ag e n e r a t i o n i i 南开大学学位论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位论文的规定, 同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版 本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供 本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名:苍确 渺年上月巧日 经指导教师同意,本学位论文属于保密,在三年解密后适用 本授权书。 指导教师签名: 卯惩 学位论文作者签名: 席嗡i 解密时间: 伽方年岁月知日 各密级的最长保密年限及书写格式规定如下: l 内部5 年( 最长5 年,可少于5 年)i p “一“”。“。4 。“。一 。“4 一:。“1 l 秘密1 0 年( 最长1 0 年,可少于1 0 年) : | 机密2 0 年( 最长2 0 年,可少于2 0 年) 南开大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作 所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含 任何他人创作的、已公开发表或者没有公开发表的作品的内容。对本论文所涉 及的研究工作做出贡献的其他个人和集体,均己在文中以明确方式标明。本学 位论文原创性声明的法律责任由本人承担。 学位论文作者签名: 孝煽 俨岁年3 - 月髟e l 第一章p d f 4 1 7 码概述 第一章p d f 4 17 码概述 第一节p d f 4 1 7 码简介 条码技术自出现以来,由于其输入速度快、准确度高、成本低,因此近2 0 年来发展十分迅速,受到人们的普遍关注。目前,条码、e d i ( 电子数据交换) 、 集装箱3 大技术已成为国际商界的3 大标准贸易方式而被广泛应用。目前常用 的是一维条码,如c o d e 3 9 、交插二五码、c o d e b a r 、c o d e l 2 8 等,在我国已广泛 应用于商业、金融业、交通运输业、医疗卫生、邮电、制造业、仓储业等领域, 极大地提高了数据采集和信息处理的速度,为管理科学化和现代化作出了积极 贡献。但是一维条码有明显缺陷: 1 、一维条码表征的信息量有限,一般每英寸只能存储十几个字符信息。例 如:c o d e 3 9 码最大密度只有9 4 c p i ( c h a r a c t e rp e ri n c h e s ) ,c o d e l 2 8 码最大密 度也只有1 2 2 c p i 。所以一维条码必须依赖后台数据库和网络才能使用,而其本 身实际只起一个指针作用,离开外部数据库,条码本身就没有意义了。因此一 维条码仅仅是对物品的“标志”,而不是对物品的“描述 ,极大制约了其发 展。 2 、一维条码只能表达字母和数字,而不能表达汉字和图像,限制了条码的 使用范围。 3 、一维条码不具各纠错功能,一旦条码受外界污染就不能使用。 二维条码的诞生解决了一维条码不能解决的问题,它是一种在水平和垂直 方向同时能够表达信息的二维条码图形,突破一维条码只在水平方向上存储信 息的限制,能够在很小的面积内表达大量的信息,脱离数据库成为独立的信息 载体,而且能够表达汉字和存储图像,极大拓展了条码的应用领域。 目前国际上使用的二维条码分两大类,一种是堆积码,如c o d e 4 9 、c o d e l 6 k 、 p d f 4 1 7 等。另一类是矩阵码;如c o d e l 、m a x i c o d e 、d a t a m a t r i x 、q r 等。 在现行的二维条码技术中,p d f 4 1 7 是目前应用最为广泛的一种二维码制。 有美籍华人王寅君博士( y n j i u np w a n g ) 发明。p d f 是取英文p o r t a b a l ed a t ef i l e 三个单词的首写字母的缩写,意为“编写数据文件”。美国s y m b o l 公司于1 9 9 1 第一章p d f 4 1 7 码概述 年将p d f 4 1 7 作为公开的系统标准技术后,p d f 4 1 7 先后被选定为国际自动识别 设计协会( 刖m ) 标准、美国标准化委员会( a n s i ) 的货物运输和纸面e d i 标 准、美国国防部的军人身份证、后勤管理和纸面b d i 标准等多项国际性标准。 在我国,p d p 4 1 7 是第一个也是目前唯一的一个二维条码国家标准,其标准文件 四一七条码于1 9 9 7 年1 2 月正式颁布。我国的二维条码技术推广应用工作 于2 0 0 1 年5 月份正式启动。 第二节p d f 4 17 码的特点、标准和应用 1 2 1 pdf4 17 码的特点1 】【2 5 】 p d f 4 1 7 性能突出,具有包括如下特点:( 1 ) 信息容量大。根据不同的条空比 例,每平方英寸可以容纳2 5 0 到1 1 0 0 个字符。在国际标准的证卡有效面积上( 相 当于信用卡面积的2 3 ,约为7 6 m m 2 5 r a m ) ,p d f 4 1 7 条码可以容纳1 8 4 8 个字母 字符或2 7 2 9 个数字字符,约5 0 0 个汉字信息。这种二维条码比普通条码信息容 量高几十倍。( 2 ) 编码范围广。p d f 4 1 7 条码可以将照片、指纹、掌纹、签字、 声音、文字等凡可数字化的信息进行编码。( 3 ) 保密、防伪性能好。p d f 4 1 7 条 码具有多重防伪特性,它可以采用密码防伪、软件加密及利用所包含的信息如 指纹、照片等进行防伪,因此具有极强的保密防伪性能。( 4 ) 译码可靠性高。普 通条码的译码错误率约为百万分之二左右,而p d f 4 1 7 条码的误码率不超过千万 分之一。( 5 ) 修正错误能力强。p d f 4 1 7 条码采用了世界上最先进的数学纠错理 论,如果破损面积不超过5 0 ,条码由于沾污、破损等所丢失的信息,可以照 常破译出丢失的信息。( 6 ) 容易制作且成本很低。利用现有的点阵、激光、喷墨、 热敏热转印、制卡机等打印技术,即可在纸张、卡片、p v c 、甚至金属表面上 印出p d f 4 1 7 二维条码。由此所增加的费用仅是油墨的成本,因此人们又称 p d f 4 1 7 是“零成本 技术。( 7 ) 条码符号的形状可变。同样的信息量,p d f 4 1 7 条码的形状可以根据载体面积及美工设计等进行自我调整。因此p d f 4 1 7 具有广 泛的应用前景。 1 2 2p d f 4 17 条码的有关标准的介绍6 1 第一章p d f 4 1 7 码概述 1 2 2 1 p d f 4 1 7 条码的常用技术名词 符号字符( s y m b l ec h a r a c t e r ) :在条码中,用来表示一个符号信息的特定的条、 空组合。一个符号字符由4 个条和空交插组合而成; 码词( c o d e w o r d ) :与符号字符相对应的符号值; 簇( c l u s t e r ) :符号字符与码词的对应关系构成的集合,共有3 个子集; 全球标记标识符( g l o b a ll a b e li d e n t i f i e r ,一g l i ) :对数据流的一种特定解 释标识; 拒读错误( r e j e c t i o ne r r o r ) :符号字符的丢失或不可译码; 替代借误( s u b s t i t u t i o ne r r o r ) :符号字符的错误译码。 1 2 2 2p d f 4 17 条码的结构概述6 】 p d f 4 1 7 条码符号是一种多层、可变长度、具有高容量和错误纠错能力的连 续性二维条码。相当于一维条形码在纵向上的叠加。符号的最小成份叫模块,模 块是一种代表规定长度的物理量,其宽度为0 3 3i i 1 1 1 。组成条码符号的基本单元 是条和空,简称码元,码元由模块构成。p d f 4 1 7 条码的可编码词符集包括全部 a s c i i 字符及扩展a s c i i 字符或8 位二进制数据,多达8 1 1 8 0 0 种;含有2 5 1 2 个错误纠正码词,具有字符自校验功能;条码符号是连续多行类型,符号尺寸 可变,其最小层数为3 ,最大层数为9 0 。宽度为9 0 叫8 3 个模块,双向可读。 p d f 4 1 7 条码符号顶部和底部为空白区,上下空白区之间是多层( 3 9 0 层) 结构, 各层符号字符数相同。层与层左右对齐直接衔接。每层由左空白区、起始符、 左层指示符号字符、1 3 0 个数据符号字符、右层指示符号字符、终止符,右空 白区组成。以下为一个7 层的p d f 4 1 7 条码,每层自左向右结构如图1 1 : 起始符号 左层指示符数据码词右层指示符 终止符 畦鼢m 暾陋 图1 1p d f 4 1 7 条码结构示意图 第一章p d f 4 1 7 码概述 每个字符由4 个条和4 个空( 码元) 构成,自左向右从条开始,每个码元含1 6 个模块,在一个符号字符中,4 个条和4 个空的总模块数为1 7 。 如图1 2 : i1l2i3i45i6 789i1 0i1 1i1 21 3f1 4i1 5i1 6l1 7 1 8 b lb 2b 3b 4 图1 2 符号字符表示 条码由取值o - 呻2 8 的9 2 9 个码词组成码词集,其中:其中0 - - 8 9 9 码词根据 当前的压缩模式和全球标记标识符( o l i ) 解释,用于表示数据;9 0 0 ,9 0 1 ,9 0 2 , 9 1 3 ,9 2 4 码词用模式识别;9 2 5 ,9 2 6 ,9 2 7 用于g l i ;9 2 2 ,9 2 3 ,9 2 8 用于宏“四 一七 条码;9 2 1 用于阅读器初始化;其余码词保留待用。 p d f 4 1 7 条码的符号字符集可分为三个独立的子集即三个簇,每一簇均以不 同的条、空形式表示所有9 2 9 个p d f 4 1 7 的码词。在每一簇中,每一符号字符对 应唯一的码词,其范围为0 - 9 2 8 。四一七条码使用簇号0 、3 、6 。条码的每层 只使用一个簇中的符号字符。同一簇每三层重复一次。第一层使用第0 簇的符 号字符,第2 层使用第3 簇的符号字符,第3 层使用第6 簇的符号字符,第4 层再使用第0 簇的符号字符,依此类推。层号由上向下递增,最上一层的层号 为l 。对于一个特定的符号字符,其簇号由下式确定: 簇号- - ( b l - - b 2 + b 3 - - b 4 + 9 ) m o d 9 ( 1 1 ) t 6 1 式中:b l ,b 2 ,b 3 ,b 4 分别表示自左向右四个条的模块。( 参见图1 2 ) 对于 每一特定的层,使用的符号字符的簇号由下式计算: 簇号= 【( 层号) m o d 3 3 ( 1 2 ) 州 由此可见,p d f 4 1 7 条码采用三种不同的符号字符集,且任何相邻两层使用 不同模式的符号字符集,这样的编码模式使得扫描器可以在高信息密度的情况 下仍能快速准确地识读代码。 图1 3 表示普通p d f 4 1 7 符号的层结构,每层中的字符数和层数都可调整以 第一章p d f 4 1 7 码概述 适应不同需要。每层都有层左、层右的指示符,中间是数据区,数据区的第一 个码词表示数据区的总字符个数( 错误校验码除外) ,对应一组给定的数据码词和 错误纠正级别,根据r e e d - - s o l o m o n 错误控制码算法计算出错误纠正码词( 即 校验码词) ,错误纠正码词跟在数据码词之后,若条码数据区未满,则应在数据 码词和错误纠正码词之间加入若干个填充码词。 k d n 1d n - 2& l l r 1 起 绿 始 止 符符 l m 2d oc k 1c k - 2r m 2 l m 1c lc oi k 1 图l ,3数据、层标识符及错误纠正码词位置示意图 图中l i ,r i 为左右层指示符,d i 为数据码词,c i 为纠错码词。 左、右层指示符的值有下式确定, l 忙 3 0 x i + 。y 旷 当b i = o 时 当b i = 3 时 当b i = 6 时肛 3 0 x i + v : 当b i = o 时 当b i = 3 时 当b i = 6 时 x i = i n t ( 层号一i ) 1 3 】 i - - o ,1 ,2 ,3 8 9 ; y i - i n t ( 层号一1 ) 3 】; 垆错误纠正等级3 + ( 层数1 ) r o o d 3 ; v = 数据区列数1 ;b i = 第i 层的簇号( 1 3 ) 6 1 错误纠正码词根据r e e d - - s o l o m o n 错误控制码算法计算生成,它可以将由 于条码符号破损、沾污等丢失的信息恢复,最高时,可将符号受损面积达5 0 的条码符号所含信息复现出来。在美国国防部举办的管理数据库测试中,阅读 2 0 0 0 万个p d f 4 1 7 条码,没出现一例译码错误,证明该算法具有极高的可靠性。 每一个p d f 4 1 7 条码至少包含两个错误纠正码词,用于对符号字符的错误 检测与纠正。p d f 4 1 7 条码共有9 种错误纠正等级,用户可自行选择。见表l 。l : 第一章p d f 4 1 7 码概述 表1 1p d p 4 1 7 条码的错误纠正等级表f 6 1 错误纠正等级 012 3 4 5 678 错误纠正码词2 4 81 63 26 41 2 82 5 6 5 1 2 数目 条码识读错误主要包括拒读错误和替代错误两种。对于一个给定的错误纠 错等级,其纠错纠正容量由下式所示: e 十2 t 、 d - - 2 = 2 s + 1 _ 2 ( 1 。4 ) t 1 3 】 其中,e 为拒读错误的数目,t 为替代错误的数目,s 为错误纠正等级,d 为错误纠正的码词数量。不同数量的编码数据所对应的错误纠正等级推荐值如 下表所示。在条码易损坏的场所,应选用较高的错误纠正等级。在封闭式系统 中,可选用低于推荐错误纠正等级的错误纠正等级。见表1 2 : 表1 2p d f 4 1 7 条码的推荐错误纠正等级裂6 】 数据码词数 1 - 一4 04 0 - 1 6 01 6 1 3 2 03 2 1 8 6 3 p d f 错误纠正等级 2345 p d p 4 1 7 四一七条码的起始符和终止符是唯一的。自左向右由条开始,起始 符的条、空组合序列为8 1 1 1 1 1 1 3 ,终止符的条、空序列为7 1 1 3 1 1 1 2 1 。 p d f 4 1 7 条码符号可以印刷成多种密度,以适应不同的印刷及扫描条件的要 求,但符号的模块宽度( x ) 不得小于0 1 9 1 衄。条码的左、右、顶部、底部的 空白区不得小于2 个模块宽度。对于已达到推荐的最低错误纠正等级的p d f 4 1 7 条码符号,其推荐的最小层高为3 x ;对未达到推荐的最低错误纠正等级的 p d f 4 17 条码符号,其最小层高应为4 x 。 p d p 4 1 7 还有另外几种条码形式。在相对“干净”的环境中,条码损坏的可 能性很小,右层指示符可以省略,终止符可以减为1 个模块宽度的条,这种条 码称为截短p d f 4 1 7 条码。当文件内容太长,无法用一个p d f 4 1 7 条码符号表示 时,可以利用用宏p d f 4 1 7 ,将大文件分成几个块来表示。宏p d f 4 1 7 条码与普通 d f 4 1 7 条码不同之处是多了一个控制块( m p c b ) ,包含块索引、文件标识等信息。 在解码时,多个宏p d f 4 1 7 条码可根据控制块信息将各分块的扫描解码结果按顺 序重新正确的连接起来,而不需要考虑扫描器阅读的顺序。通过宏p d f 4 1 7 条码, 一个文件可以用l - - 9 9 9 9 9 个条码符号的分块表示出来。 第一章p d f 4 1 7 码概述 第三节p d f 4 17 二维条码的图像生成 p d f 4 1 7 的图像生成就是将所需的文字、图片等可读信息运用编码算法转换 成用于绘制p d f 4 1 7 条码的码词,然后加上必要的附加信息,再通过数据库查询 把码词转换成对应的条空相间的符号字符,最后在打印机上将那些层层相叠的 条空绘出。即得到p d f 4 1 7 条形码图像。 数据流程简图如图1 4 : 分 析 数 据 纠 错 编 码 数据码词 纠错码词 忆p vf 数仨曝 获取符 号字符 条码 图片 生成 实现步骤为: 首先分析输入的数据文件,将文字和图像数据分组,以待下一步的分类编码; 按照p d f 4 1 7 条码的三种压缩编码模式的编码规则,将上一步得到的分组 数据按相应的压缩编码模式进行编码,得到数据码词; 设定条码的纠错等级、层数和列宽度的码词数; 对数据码词作纠错编码运算,得到纠错码词; 在每一行码词的前、后分别加入左层指示符码词和右层指示符码词; 将所有码词从符号字符码词集索引表中查找出相应的符号字符值; 最后根据各码词的符号字符值生成p d f 4 1 7 条码二值图像。 第四节p d f 4 17 条码的识读 一维条码的识别是使用光束式条码扫描仪,直接采用模拟电路探测条码的 数据文件 司 酐: 舻八 数据编码 第一章p d “1 7 码概述 条空分界信号来进行识别。p d f 4 1 7 二维条码的识别是将条码图形通过内置c c d 扫描仪整图读取,然后通过编程来完成条码的条空分界。通过解码程序完成条 码的识读。泽码流程为: 对图像进行二值化处理。 扫描二维图片根据灰度变化定位条形码。 对每一层的不同位置做多次扫描确定起始和终止符中所包含的单位模 块的宽度。 根据p d f 4 1 7 码的特性,如条空宽度皆为单位模块宽的整数倍,每个码 词对应的条空宽度和为1 7 等,选出每一层中最合适的扫描结果,并对其做 规格化修正,得到符号字符。然后,再按8 个符号字符与一个码词相对应的 关系分割,得到全部码词信息,按条码编码的各步骤的逆运算,除去左右标 志符等附加信息就可以完整的实现译码。 第二章p d f 4 1 7 二维条形码的编码方法及实现 第二章p d f 4 17 二维条形码的编码方法及实现 p d f 4 1 7 条码的生成是一个复杂的过程,大致可划分成四个步骤: 数据编码 纠错编码 将输入的数据文件的文字图像做分组,然后按照p d f 4 1 7 条码的 三种压缩模式的编码规则,将各组数据进行模式切换编码和相应 的数据压缩编码,最后得到数据码词。 设定条码的纠错等级,层数和列码行数并填充虚拟码词,对长 度码词、数据码词和虚拟码词作纠错码运算,得到纠错码词。 左右层指示符编码按左、右层指示符的编码规则,计算并在每一层码 词的前、后分别加入左层指示符码词和右层指示符 码词: 生成条码图片:将所有码词从符号字符码词集索引表中查找出相应的符 号字值,然后根据这些码词的符号字符值生成p d f 4 1 7 条 码二值图像。 第一节p d f 4 17 条码的数据编码8 ,幽】 p d f 4 1 7 条码的第一个码词是长度码词,表示数据码词( 包括符号长度码词) 的个数,真正的数据编码从第二个码词开始。 2 1 1 数据压缩模式 p d f 4 1 7 条码有三种数据压缩编码模式:文本压缩模式( t c ) ;字节压缩模式 ( b c ) ;数字压缩模式( n c ) 。不同的压缩编码模式之间的切换还要应用模式切 换编码。经数据的压缩模式编码和模式的转换编码,得到的是一系列编码后的 数据码词。 1 、数字压缩模式( n c ) 数字压缩模式利用基数1 0 至基数9 0 0 的转换,将约3 个数字位压缩成一 个码词,实现数据位数的压缩。该模式通过码词为9 0 2 时锁定。在数字压缩模 式下,对数字位进行编码的算法是:将数字序列从左到右每4 4 位分为一组,最 第二章p d f 4 1 7 二维条形码的编码方法及实现 后一组的数字位可少于4 4 ;对每一组数字,首先在数字序列前面加上一个“1 ”, 然后进行从基1 0 到基9 0 0 的转换。转换以后。可以将4 4 位数字可用1 5 个码词 表示。如果数字的位数小于1 3 ,一般不使用数字压缩模式,而采用文本压缩模 式。数字位译码算法与编码算法相反,首先将每1 5 个码词从左向右分为一组, 其中最后一组的码词可以少于1 5 个,然后进行基9 0 0 到基l o 的转换,最后去 掉前导位。 2 、文本压缩模式( t c ) 文本压缩模式( t c ) 通过码词为9 0 0 时锁定,它分成四种子模式:大写字母 型子模式( a l p h a ) ,小写字母型子模式( l o w e rc a s e ) ,混合型子模式( m i x e d ) , 标点型子模式( p u n c t u a t i o n ) 。通过标准字符集所对应的特定数值可以完成各子 模式之间的切换,可进行转移切换( 只对切换后的第一个码词有效,随后返回) ; 亦可进行锁定切换( 该模式切换到下一个切换前一直有效) 。其他任何模式到文 本压缩模式( t c ) 的锁定都是到大写字母型子模式的( a l p h a ) 锁定。 每种子模式选择文件中出现频率较高的一种字符组成的字符集。在子模式 中,g l i 标准规定了文本压缩模式下,每一个字符都对应的一个值( 0 2 9 ) , 两个字符对应一个单独的码词:码词= 3 0 x h + l ,其中,h 是第一个文本字符, l 是第二个文本字符。 在文本压缩模式中每一个码词用两个基为3 0 的值表示( 范围为0 - - 2 9 ) 。 如果在一个字符串的尾部有奇数个基为3 0 的值需要用值为2 9 的虚拟字符p s 填充最后一个码词。 3 、字节压缩模式( b e ) 字节压缩模式( b c ) 是通过基2 5 6 至基9 0 0 的转换,将二位1 6 进制的字节 序列转换为码词序列。对字节压缩模式来说,有两种模式锁定( 9 0 1 ,9 2 4 ) 当 所要表示的字节总数不是6 的倍数时,用码词9 0 1 锁定,表示的字节总数是6 的倍数的时候用9 2 4 锁定。其编码算法也分为:9 2 4 锁定模式和9 0 1 锁定模式 9 2 4 锁定模式。将字节序列从左到右每6 个字节分为一组,把6 个字节 长的数据通过基2 5 6 至基9 0 0 的转换表示为5 个码词。方法是: a 。2 5 6 5 + a 2 2 5 6 4 + a 。2 5 6 3 + a 4 2 5 6 2 + a 。2 5 6 + 乜 = s 。9 0 0 4 + s :9 0 0 3 + s 。9 0 0 2 + s 。9 0 0 + s 5 ( 2 - 1 ) 【6 1 上式中a 。表示字节,s ;表示码词,a 。至氏均以十进制数形式带入。 9 0 1 锁定模式前每6 个字节的转换方法同上,剩下的每个字节对应一个 第二章p d f 4 1 7 二维条形码的编码方法及实现 码词,依次直接表示。例如将数据序列( 0 1 h ,0 2 h ,0 3 h ,0 4 h ,0 5 h ,0 6 h , 0 7 h ,0 8 h ,0 4 h ,) 转换为一个码词序列为:( 9 0 1 ,l ,6 2 0 ,8 9 , 7 4 ,8 4 6 , 7 ,8 ,4 ) 4 、模式切换 p d f 4 1 7 定义了一些模式锁定和转移码词,模式锁定码词用于将当前模式切 换为指定的目标模式,且切换后的目标模式在下个切换之前一直有效:模式转移 码词用于将文本压缩模式( t c ) 暂时切换为字节压缩模式( b c ) ,仅对切换后的第 一个码词有效,随后的码词又返回文本压缩模式( t c ) 的当前子模式。通过应用 模式锁定和转移码词,可在一个p d f 4 1 7 条码符号中用多种模式作数据编码,其 切换编码规则见2 1 表。 表2 1 切换编码规则 值用途 9 0 0 锁定为t c 模式 9 0 1锁定为b c 模式( 编码的字节数不是6 的倍数) 9 2 4 锁定为b c 模式( 编码的字节数是6 的倍数) 9 1 3 转移为b c 模式 9 0 2 锁定为n c 模式 2 1 。2 数据编码算法实现 将待编码的原始信息,存入变量组m i n p u t s t r 中,然后对数据流作分析, 将它分成用不同压缩模式编码的多组数据,对每一组数据,先进行模式转换编 码,再将数据按相应的压缩模式进行压缩编码,直至最后一组数据完成编码。 数据编码的关键是数据分组、模式转换编码以及数字( n c ) 、文本( t c ) 、字节 ( b c ) 三种压缩编码的算法实现。 1 、数据分组算法实现 定义m 为数据流的字节数;p 为对数据作模式分组的起始位置;m o d e 为当 前的压缩编码模式;n 为从p 开始的数字个数;t 为从p 开始的t c 模式字符个 数;b 为从p 开始的b c 模式字节个数;n c 、t c 、b c 分别表示数字、文本和字节 压缩编码模式,e n c o d e n c ( ) 、 e n c o d e t c ( ) 、 e n c o d e b c ( ) 分别为数字压缩 模式、文本压缩模式、字节压缩模式的数据编码函数。 第二章p d f 4 1 7 二维条形码的编码方法及实现 b e 例州 p = 0 ;m o d e = t c ;n = 0 ;t = o ;b = o ; w h i l e ( p + n + t + b m ) ( n = 从p 开始读取的连续数字个数; i f ( n 1 3 ) t h e n ( e n c o d e n c ( ) :m o d e = n c :p = p + n :c o n t i n u e ) e l s e ( n = o ;t = 开始的n c 模式字符个数: i f ( n 5 ) t h e n ( e n c o d e t c ( ) ;m o d e = t c :p = p + t ;c o n t i n u e ) e l s e ( t = o :b = 从p 开始的b c 模式字符个数; e n c o d e b c ( ) :m o d e = b c ;。p = p + b ;c o n t i n u e ) e n d 2 、模式切换编码算法实现 m o d e 为当前的编码模式,c m o d e 为要切换的目标模式,c o d e 为切换结果码 词;n c 、t c 、b c 分别表示数字、文本和字节压缩编码模式。 b e g i n c a s en c : c o d e = 9 0 2 : c a s et c : c o d e = 9 0 0 ; c a s eb c :i f ( b = 1 ) t h e n c o d e = 9 1 3 ;) e l s ei f ( bm o d6 = o ) t h e n ( c o d e = 9 0 1 ;) e l s e ( c o d e - - 9 2 4 ;) e n d 3 、数字压缩模式编码算法实现 数字压缩模式要把每个4 4 个数字分一组在加上一个前导位,然后执行基1 0 至基9 0 0 的转换,算法中要用到l o 的4 4 次幂,而在6 4 位二进制数只里只能表 示1 0 的1 9 次幂,不能直接进行从基1 0 至基9 0 0 的数值转换运算。因此把4 5 位的数字序列分成3 组,每组为1 5 位,进行从基l o 到基9 0 0 的运算。不足4 5 位的数字序列在前面补0 。 d a t e 为4 5 位数字序列数组;c o d e 为转换后的码词数组;n u m h i g h 、 n u m m i d 、n u m l o w 分别为4 5 位数字序列的高、中、低1 5 位的整型数;p o w e r 为 1 2 第二章p d f 4 1 7 二维条形码的编码方法及实现 运算式的幂。 b e g a n p o w e r = 1 4 ;n u m h i g h = o ;n u m m i d = o ;n u m l o w = o ; f o ri = 1t o1 4 ( n u m h i g h = n u m h i g h + d a t e i 1 0 岬。; f o ri = 1 p o w e r = 1 4 ; f o ri = 1 n u m m i d = n u m m i d + d a t e i + 1 5 1 0 岬。; n u m l o w = n u m l o w + d a t e i + 3 0 10 唧; p o w e r = p o w e r - i ;) t 01 4 ( c o d e i = o ;) t o4 ( c o d e i - c o d e i + ( n u m h i g hx1 0 3 0 ) 9 0 0 p o w e r | n u m h i g h = ( n u m h i g hx1 0 ) m o d 9 0 0 p 。 ”:p o w e r 一一) n u m m i d = n u m m i d + n u m h i g h i 0 1 5 ;p o w e r f o ri = 4t o i o ( c o d e i = c o d e i + ( n u m m i d 1 0 1 5 ) 9 0 0 p 。 ”; n u m l o w = ( n u m l o w 1 0 1 5 ) r o o d 9 0 0 0 。:p o w e r - - ) n u m l o w = n u m l o w + n u m m i d x1 0 坫:p o w e r 一一 f o ri = 1 0t o1 4 ( c o d e i = c o d e i + n u l l l l o w 9 0 0 栅; n u m l o w = n u m l o w m o d 9 0 0 9 。 ”;p o w e r - - ) e n d 4 、文本压缩模式编码算法 m 为用文本模式编码数据流的字节数,d a t e 口为文本模式的待编码数据的 数组;c d a t e 口为转换后的字符值数组;m o d e 当前的子模式;c m o d e 为切换的目 标子模式;c o d e 为转换后的码词; a l 、l l 、m l 、p s 分别代表大写字母型、小 写字母型、混合型、标点型四种文本压缩编码子模式。 b e g i n m o d e = a l ;建立四个子模式的字符集( 0 2 9 ) ; f o ri = 0t om 一1 (i f ( d a t e i 为大写模式中的字符) t h e n i f ( m o d e = a l ) t h e n ( 将数据字符值加入c d a t e 数组;) e l s e 将转换子模式字符值加入c d a t a 数组; 将数据字符值加入c d a t e 数组;c m o d e = a l ) 】 e l s ei f ( d a t e i 为小写子模式中的字符) t h e n ( 1 3 第二章p d f 4 1 7 二维条形码的编码方法及实现 i f ( m o d e = l l ) t h e n 将数据字符值加入c d a t e 数组;) e l s e ( 将转换子模式字符值加入c d a t e 数组; 将数据字符值加入c d a t e 数组;c m o d e = l l ;) ) e l s e i f ( d a t e i 为混合子模式中的字符) t h e n ( i f ( m o d e = m l ) t h e n 将数据字符值加入c d a t e 数组;) e l s e ( 将转换子模式字符值加入c d a t a 数组; 将数据字符值加入c d a t e 数组;c m o d e = m l :) ) e l s e 9 2 9 ,在有限域g f ( 9 2 9 ) 中的负值为等于该值的补数:如果c - 9 2 9 ,在有限域 g f ( 9 2 9 ) 中的负值为等于余数( c 9 2 9 ) 补数。得到纠错码词之后,根据码词数量 选择条码的层数和列数, 2 、 纠错编码算法的实现 1 0 】【1 1 】 1 2 l 第二章p d f 4 1 7 二维条形码的编码方法及实现 n 为数据区码词数;s 为选定的纠错等级;k 为错误纠错码词数;e r r o r 为纠错等级为s 时的纠错码词生成多项式g 。( x ) 的各项系数;d a t e c o d e 口为数 据区码词数组:e r r c o d e 口为输出的纠错码宇;t 1 、t 2 、t 3 为临时中间变量。 b e g i n 将错误纠错码词生成多项式的各项系数写入e r r o r 数组; e r r c o d e 数组的各元素和t 1 、t 2 、t 3 变量均初始化为0 ; f o ri - - - 0t on 一1 ( t 1 = ( d a t a c o d e i + e r r c o d e k 一1 ) m o d9 2 9 : f o rj = k 一1t 0l ( t 2 = ( t i * e r r o r j ) m o d9 2 9 : t 3 = 9 2 9 一t 2 : e r r c o d e j = (e r r c o d e j 1 + t 3 ) m o d 9 2 9 ;) t 2 = ( t i * e r r o r 0 ) m o d9 2 9 ;t 3 = 9 2 9 一t 2 ; e r r c o d e 0 = t 3m o d9 2 9 ;) f o ri=0t ok 一1 (i f ( e r r c o d e i n o t0 ) t h e n e r r c o d e i = 9 2 9 一 e r r c o d e i ;) ) e n d 第三节左右层指示符的编码 p d f 4 1 7 条码的编码码词每层以层左指示符开始,并以层右指示符为结束。 1 、左右层指示符的编码规则 左右指示的字符值依赖于其层号、层数、列数和纠错等级。条码第i 行的 左层指示符( l 。) 和右层指示符( r 。) 的值由下式确定: 左层指示符:当b 。= 0 时,l 。= 3 0 * i n t ( 层号3 ) + i n t ( 层数一1 ) 3 当b 。= 3 时,l ,= 3 0 * i n t ( 层号3 ) + 错误纠正等级术3 + ( 层数一1 ) m o d 3 当b 。= 6 时,l 。= 3 0 * i n t ( 层号3 ) + 每层列数一l 其中b 。代表每层的族号,l ;代表第i 层左层指示符 右层指示符:当b 。= 0 时,r i = 3 0 * i n t ( 层号3 ) + 每层列数一1 第二章p d f 4 1 7 二维条形码的编码方法及实现 当b i _ 3 时,r i = 3 0 * i n t ( 层号3 ) + i n t ( 层数一1 ) 3 当b ;= 6 时,r i = 3 0 * i n t ( 层号3 ) + 错误纠正等级术3 + ( 层数一1 ) m o d 3 其中也代表每层的族号,& 代表第i 层右层指示符 2 、左右层指示符编码算法实现 b e g i n 计算y 、z 、 y 值。 f o ri = lt 0r o w s l ( 计算c 、x 的值; 对c 值, b e g i n c a s e o : l = 3 0 x + y ;r = 3 0 x 十v : c a s e 3 :l = 3 0 x + z r = 3 0 x + y c a s e6 :l = 3 0 x + v ; r = 3 0 x + z ; e n d 将l 值插入码词数组的下标为( r o w s 1 ) 冰( c o l s + 2 ) 的元素位置上; 将r 值插入码词数组的下标为r o w s * ( c o l s + 1 )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年互联网行业新兴技术发展研究报告及未来发展趋势预测
- 2025年房地产行业绿色建筑智能零碳目标推广能力考核试卷
- 2025年汽车交通行业自动驾驶技术应用研究报告及未来发展趋势预测
- 2025年航运物流行业智能运输与全球物流网络布局研究报告及未来发展趋势预测
- 2025年互联网医疗行业创新模式与政策影响研究报告及未来发展趋势预测
- 经济学基础知识导论-经济学导师
- 2025湖南海猎企业管理咨询有限公司招聘1人笔试考试备考题库及答案解析
- 2025湖南旅游集团招聘二级企业正职负责人1人考试笔试备考试题及答案解析
- 2025广东茂名信宜市林业局选调公务员1人笔试考试参考试题及答案解析
- 2025重庆市荣昌区事业单位面向应届高校毕业生考核招聘37人笔试考试备考试题及答案解析
- 小学比较级最高级练习题
- 职业道德完整
- 建设工程消防设计审核申报表-范本
- 箱变调试方案
- 从偶然到必然:华为研发投资与管理实践
- 建筑施工安全风险辨识分级管控(台账)清单
- 新媒体运营PPT完整全套教学课件
- 《记念刘和珍君》《为了忘却的记念》 联读 统编版高中语文选择性必修中册
- 幼儿园游戏区规划与指导
- 水库防洪调度基本知识
- A6L 20T BPJ发动机电路图
评论
0/150
提交评论