国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

漢信碼技術(shù)優(yōu)勢與技術(shù)原理解析

2021-11-21 02:16王毅鄧惠朋董曉文
中國自動識別技術(shù) 2021年5期
關(guān)鍵詞:字節(jié)二維碼編碼

王毅 鄧惠朋 董曉文/文

本世紀初,為解決PDF417、QR等國外碼制不支持中國漢字以及漢字信息表示效率不高等問題,中國物品編碼中心(以下簡稱編碼中心)牽頭我國企業(yè)共同研發(fā)了“漢信碼”二維碼碼制。2007年,GB/T 21049-2007《漢信碼》國家標準正式發(fā)布,2011年漢信碼成為國際AIM Global權(quán)威行業(yè)標準,2015年,漢信碼正式成為國際ISO標準項目。2021年,ISO/IEC 20830《信息技術(shù) 自動識別與數(shù)據(jù)采集技術(shù)漢信碼條碼符號規(guī)范》國際標準正式發(fā)布,標志著中國人具有了完全自主知識產(chǎn)權(quán)的二維碼碼制技術(shù),實現(xiàn)了我國又一底層技術(shù)的零的突破。

漢信碼是我國第一個制定了國家標準并且擁有自主知識產(chǎn)權(quán)的二維碼,如圖1所示,在漢字信息表示方面漢信碼達到國際領(lǐng)先水平,在數(shù)字和字符、二進制數(shù)據(jù)等信息的編碼效率、符號信息密度與容量、識讀速度、抗污損能力等方面達到了國際先進水平。經(jīng)歷十余年的打磨,ISO版漢信碼相比2005年研發(fā)完成時的技術(shù)更為成熟。ISO漢信碼在技術(shù)上完全涵蓋并兼容原有漢信碼(指GB/T 21049 2007)國家標準中規(guī)定技術(shù),還增補擴展了Unicode模式、URI模式、GS1模式三個針對重要應(yīng)用領(lǐng)域的新型信息編碼與譯碼模式,大幅提高了漢信碼針對我國國際化應(yīng)用的適用性,填補了國際二維碼碼制在這些領(lǐng)域的空白。

圖1 漢信碼碼圖外觀

漢信碼技術(shù)優(yōu)勢

漢信碼技術(shù)的設(shè)計與工程實現(xiàn)是在理論和技術(shù)研究基礎(chǔ)上,針對我國二維碼應(yīng)用的切實問題進行的不斷自主創(chuàng)新,因此,漢信碼在技術(shù)方面不僅綜合了各個碼制的優(yōu)勢,更能夠在許多方面推陳出新,實現(xiàn)后發(fā)優(yōu)勢。

在碼圖設(shè)計、糾錯能力以及信息編碼方面,漢信碼注重在識讀速度、碼制可靠性與信息密度和容量的統(tǒng)籌兼顧,實現(xiàn)了漢信碼在信息編碼、糾錯能力與符號抗畸變的完美平衡,如圖2所示。

圖2 漢信碼碼圖結(jié)構(gòu)

漢信碼具有九大技術(shù)優(yōu)勢,具體如下:

知識產(chǎn)權(quán)免費

作為完全自主創(chuàng)新的一種二維碼碼制,漢信碼的九項技術(shù)專利成果歸編碼中心所有。編碼中心早在漢信碼研發(fā)完成時即明確了漢信碼專利免費授權(quán)使用的基本原則,更不需要向編碼中心以及其他任何單位繳納專利使用費。漢信碼具有完全自主知識產(chǎn)權(quán),《糾錯編碼方法》《數(shù)據(jù)信息的編碼方法》《二維條碼編碼的漢字信息壓縮方法》《生成二維條碼的方法》《二維條碼符號轉(zhuǎn)換為編碼信息的方法》《二維條碼圖形畸變校正的方法》《漢信碼的物流信息編碼方法、裝置及設(shè)備》《字符串編碼的方法和裝置》《編碼方法、裝置、設(shè)備及計算機可讀存儲介質(zhì)》等9項核心發(fā)明專利,全部免費公開,使用漢信碼不存在任何專利問題,沒有任何的專利風險與專利陷阱。

極強抗污損、抗畸變識讀能力

由于考慮了物流等實際使用環(huán)境會給二維碼符號造成污損,同時由于識讀角度不垂直、鏡頭曲面畸變、所貼物品表面凹凸不平等原因,也會造成二維碼符號的畸變。為解決這些問題,漢信碼在碼圖和糾錯算法、識讀算法方面進行了專門的優(yōu)化設(shè)計,從而使?jié)h信碼具有極強的抗污損、抗畸變識讀能力?,F(xiàn)在漢信碼能夠在傾角為60度情況下準確識讀,能夠容忍較大面積的符號污損。因此漢信碼特別適合在物流等惡劣條件下使用,如圖3所示(見下頁)。

識讀速度快

圖3 漢信碼污損畸變符號識讀

為提高二維碼的識讀效率,滿足物流、票據(jù)等實時應(yīng)用系統(tǒng)的迫切需求,漢信碼在信息編碼、糾錯編譯碼、碼圖設(shè)計方面采用了多種技術(shù)手段提高了漢信碼的識讀速度,目前漢信碼的識讀速度比國際上的主流二維碼Data Matrix要高,因此漢信碼能夠廣泛地在生產(chǎn)線、物流、票據(jù)等實時性要求高的領(lǐng)域中應(yīng)用。

糾錯能力強

根據(jù)漢信碼自身的特點以及實際應(yīng)用需求,采用最先進的Reed-Solomon糾錯算法,設(shè)計了四種糾錯等級,適應(yīng)于各種應(yīng)用情形。此外,為適應(yīng)二維碼的各類應(yīng)用環(huán)境,漢信碼對于各版本和各糾錯等級的糾錯分組和信息排布進行了專門優(yōu)化,在容錯性能和計算速度上實現(xiàn)了平衡,最大糾錯能力可以達到30%,在性能上接近并超越現(xiàn)有國際上通行的主流二維條碼碼制。

信息密度高

為提高漢信碼的信息表示效率,漢信碼在碼圖設(shè)計、字符集劃分、信息編碼等方面充分考慮了這一需求,從而提高了漢信碼的信息特別是漢字信息的表示效率,當對大量漢字進行編碼時,相同信息內(nèi)容的漢信碼符號面積只是QR碼符號面積的90%,是Data Matrix碼符號的63.7%。

信息容量大

漢信碼最多可以表示7829個數(shù)字、4350個ASCII字符、2174個漢字、3262個8位字節(jié)信息,支持照片、指紋、掌紋、簽字、聲音、文字等數(shù)字化信息的編碼。

表達漢字能力強

漢信碼是目前唯一全面支持我國漢字信息編碼強制性國家標準GB 18030-2005《信息技術(shù)中文編碼字符集》的二維碼碼制,能夠表示該標準中規(guī)定的全部常用漢字、二字節(jié)漢字、四字節(jié)漢字,同時支持該標準在未來的擴展。在漢字信息編碼效率方面,對于常用的雙字節(jié)漢字采用12位二進制數(shù)進行表示,在現(xiàn)有的二維碼中表示漢字效率最高。

此外,ISO版漢信碼擴展支持了Unicode壓縮模式,這一新模式在保持漢信碼漢字高效編碼的基礎(chǔ)上,極大提高了漢信碼支持多種語言文字的信息編碼能力。

因此,漢信碼是表示漢字信息的首選碼制。

適合移動商務(wù)應(yīng)用

目前二維碼的應(yīng)用熱潮,主要是由于二維碼的移動應(yīng)用推動起來的,通過手機掃描或手機展示二維碼,實現(xiàn)購物、乘車、健康碼等應(yīng)用已經(jīng)成為大眾生活的主流,這些二維碼中承載的內(nèi)容主要是URL,俗稱網(wǎng)址。URL是URI,即統(tǒng)一資源標識符的一種形式,用于在規(guī)定的網(wǎng)絡(luò)協(xié)議下進行資源定位。這些二維碼中的URI通常為短URI,用戶通過掃描二維碼獲取URI,通過APP定義的方式引導(dǎo)用戶訪問網(wǎng)絡(luò)資源,二維碼已經(jīng)成為事實上的移動商務(wù)入口。

現(xiàn)有的二維碼,如日本的QR碼等并沒有針對目前如此廣泛的二維碼移動應(yīng)用進行優(yōu)化,現(xiàn)有碼制僅僅將網(wǎng)址視為由字母、數(shù)字、其他字符組成的字符串進行編碼,且大多采用效率最低的8字節(jié)編碼模式,造成編碼空間的浪費,損失編碼效率。

針對目前二維碼主要的網(wǎng)址應(yīng)用模式,漢信碼ISO標準中設(shè)計采用了高效的URI編碼模式。相同的網(wǎng)址,使用漢信碼較其它碼制的編碼效率更高,碼圖面積更小。例如,對于網(wǎng)址:https://www.ten?cent.com/zh-cn/index.html的編碼符號,漢信碼(圖4 A)的模塊數(shù)為25×25,QR碼(圖4 B)的模塊數(shù)為29×29,相同模塊大小的前提下,漢信碼面積僅為QR碼的74%,如圖4所示。

圖4 漢信碼僅為QR碼面積的74%

某些特殊網(wǎng)址,漢信碼編碼效率更高,編碼信息序列長度甚至僅為QR碼的一半,甚至更低。這對提高二維碼識讀效率,小包裝商品的二維碼印制,降低企業(yè)印制成本具有積極的現(xiàn)實意義。

支持主流的GS1編碼和全球任意語言文字編碼

針對目前國際主流的GS1編碼,ISO版漢信碼也增加了GS1模式,高效承載GS1編碼。GS1 Global主席米蓋爾公開表示支持漢信碼碼制上升成為國際GS1二維碼碼制之一。

由于二維碼具有信息容量大、成本低廉等優(yōu)勢,二維碼技術(shù)應(yīng)用目前已經(jīng)形成全球性的熱潮,而在以二維碼作為描述性、文字類數(shù)據(jù)載體的應(yīng)用中,由于各國采用的語言文字不同,從而造成在某一個國家編制生成的二維碼,在另一個國家譯碼時,由于應(yīng)用軟件、操作系統(tǒng)采用的編碼字符集不同,出現(xiàn)二維碼譯碼結(jié)果為亂碼的現(xiàn)象,這對二維碼技術(shù)的全球性廣泛應(yīng)用造成了嚴重阻礙。

引起這一問題的原因主要是歷史遺留的文字信息編碼問題。在全球信息化過程中,由于各種原因,語言文字的編碼采用的技術(shù)方案各不相同,在早期的7位、8位編碼以及16位編碼階段,過渡到目前的基于多個編碼平面的各類大字符集過程以及主流應(yīng)用軟件和操作系統(tǒng)的升級過程中,各個主要國家都累積了不同的信息編碼字符集。漢字在日本、韓國等漢字集中同樣存在,不同的字符集編碼中,同樣的漢字編碼不同,同一個編碼取值,指代的字符不同,同時這些字符集的應(yīng)用主要表現(xiàn)為確定區(qū)域的特色。在文字編碼中,漢字編碼是最為復(fù)雜的問題之一,除了我國的GB 2312、GB 18030字符集之外,日本、韓國的現(xiàn)行字符集中也包含了大量漢字。據(jù)不完全統(tǒng)計,目前國際上已經(jīng)存在的編碼字符集有數(shù)百個,相關(guān)字符集內(nèi)的字符碼位與相互映射關(guān)系非常復(fù)雜,跨系統(tǒng)的信息交互采用兩個字符集間的映射不大可行。

為解決多國文字的自適應(yīng)高效編碼問題,產(chǎn)業(yè)界研發(fā)了Unicode(統(tǒng)一碼、萬國碼、單一碼)業(yè)界標準,并同步修訂完成了ISO/IEC 10646標準。Uni?code是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。目前的Unicode字符分為17組編排,0x0000至 0x10FFFF,每組稱為平面(Plane),而每平面擁有65536個碼位,共1114112個。然而目前只用了少數(shù)平面。Unicode是一張非常巨大的字符碼表,每個字符都賦予了“U+”開頭的編號,例如:U+4E25為漢字“嚴”字;Unicode的唯一字符編碼,可以采用多種方式編碼為二進制形式,如UTF-8、UTF-16、UTF-32等,且其中UTF-8是最通用、支持最廣泛的字符編碼。

為解決二維碼字符編碼在譯碼時的問題,編碼中心開展了漢信碼信息編碼技術(shù)研究,通過研究發(fā)現(xiàn)全面支持各類語言高效編碼的實現(xiàn)路徑應(yīng)采用全面支持Unicode的方式實現(xiàn),從而開發(fā)了Unicode壓縮模式,這一新模式在保持漢信碼原有的漢字等多種文字高效編碼的基礎(chǔ)上,極大提高了漢信碼支持多種語言文字的信息編碼能力。目前,漢信碼是第一個也是唯一一個同時支持英文、日文、德文、阿拉伯文、希伯來文等全系列語言文字高效編碼的碼制,能夠?qū)崿F(xiàn)針對多國文字的自適應(yīng)高效編碼。

優(yōu)勢實現(xiàn)的技術(shù)背景

漢信碼強大的技術(shù)優(yōu)勢源自于底層嚴密的技術(shù)設(shè)計,碼圖設(shè)計決定了抗污損、抗畸變能力和快速的識讀水平,URI模式極大提高了網(wǎng)址表達效率,更加符合網(wǎng)絡(luò)時代下二維碼作為網(wǎng)址跳轉(zhuǎn)載體的現(xiàn)實應(yīng)用需求,Unicode模式則解決了多國文字的自適應(yīng)高效編碼問題,成為唯一能夠?qū)崿F(xiàn)全球任意語言表達的二維碼碼制。

碼圖設(shè)計

碼圖分為功能圖形區(qū)和編碼信息區(qū)。為了達到快速定位的目的,漢信碼采用掃描特征比例的方式進行碼圖尋像與定位,碼圖尋像圖形由位于碼圖四個角上的位置探測圖形組成。碼圖的校正圖形是由黑白兩條線組成階梯形的折線,通過折線的交點來達到分塊校正碼圖的目的。為了能有效利用碼圖編碼空間,版本設(shè)計時,相鄰版本之間的模塊變化為每邊相差2個模塊。在信息編碼區(qū),將數(shù)據(jù)碼字和糾錯碼字按照一定的編排規(guī)則組合后對碼字進行交織編排,并按指定的布置規(guī)則進行碼圖布置。同時,為了使信息編碼區(qū)符號的黑白模塊比例均衡,盡量減少影響圖像快速處理的圖形出現(xiàn),對編碼信息區(qū)添加掩模,使黑白模塊的比例接近1:1。其功能信息區(qū)則布置著碼圖的版本信息、糾錯等級、掩模方案等。

尋像圖形包括四個位置探測圖形,分別位于符號的左上角、右上角、左下角和右下角,如圖5所示(見下頁)。各位置探測圖形形狀相同,只是擺放的方向不同,位于右上角和左下角的尋像圖形擺放方向相同,這樣設(shè)計的目的是為了使整個碼圖有明顯的方向特性。以左上角的位置探測圖形為例,它的大小為7×7個模塊,整個位置探測圖形可以理解為將3×3個深色模塊,沿著其左邊和上邊外擴1個模塊寬的淺色邊,后繼續(xù)分別外擴1模塊寬的深色邊、一個模塊寬的淺色邊、一個模塊寬的深色邊所得。其掃描的特征比例為1:1:1:1:3和3:1:1:1:1(沿不同方向掃描所得值不同)。符號中其它地方遇到類似圖形的可能性極小,可以在視場中迅速識別可能的碼制符號。識別組成尋像圖形的四個位置探測圖形,可以明確地確定視場中符號的位置和方向。

圖5 尋像圖形結(jié)構(gòu)圖

定位圖形設(shè)計

從對QR、DataMatrix等各種二維碼的分析來看,通過對具有簡單幾何比例特征的模式進行多方向掃描的方式是最簡單快速的解碼方式。

為了定位上的快捷方便,在碼圖的四個角上各放置一個定位圖形,并確定了定位圖形在碼圖中的放置方式,這樣放置不僅保證碼圖具有對稱性,同樣能體現(xiàn)漢信碼的方向性,使得漢信碼的碼圖具有明顯的不同于已有二維碼的特征,而且使得漢信碼具有更好的快速定位的能力,如圖6所示。

圖6 漢信碼定位圖形放置

定位圖形位于符號的4個角上。各元素的相對寬度的比例是1:1:1:1:3或3:1:1:1:1,因此需要同時探測的比例是1:1:1:1:3和3∶1∶1∶1∶1。在水平和垂直方向?qū)ふ覞M足1:1:1:1:3或3:1:1:1:1比例的模式,搜索結(jié)果即為圖像的四個定位符號的位置信息。設(shè)條碼區(qū)圖像為G(x,y),條碼在圖像中的高度和寬度分別記為H、W,圖像二值化時的閾值為 T,得到條碼的邊界 E(x1,x2,…xw)時,即

從當前位于 E(x1,x2,…xw)上的邊界點出發(fā),搜索并得到從X軸方向和Y軸掃描圖像中的比例是1:1:1:1:3或3:1:1:1:1的模式,則為漢信碼的尋像符號的特征模式。

校正圖形設(shè)計

對于一種碼制來說,通常會采用定位圖形和校正圖形相組合的方式來達到抗畸變能力。在漢信碼符號較大的情況下,需要增加校正圖形,采用分區(qū)的方式將二維碼分成小區(qū)域。因為符號較大時,整體可能會產(chǎn)生較大的畸變,但是小區(qū)域內(nèi)的畸變會相對較小,這樣才能保證漢信碼的抗畸變能力。

漢信碼的校正圖形由一組或幾組單模塊寬,長度不同的臨接連續(xù)深淺模塊(簡稱校正折線)組成的,橫豎連續(xù)排布的階梯形折線,以及排布于碼圖四個邊上的2×3(5個淺色,1個深色)個模塊組成的輔助校正圖形共同構(gòu)成,如圖7-1、7-2、7-3所示(見下頁)。對于某一個漢信碼符號版本,校正圖形折線的長度(連續(xù)模塊數(shù))取值有兩種,其中碼圖最左邊與最下邊區(qū)域的校正折線長度(寬度)取特殊值r,而剩余區(qū)域的校正折線長度(寬度)為k。當校正折線位于符號邊緣時,校正折線設(shè)定為單模塊寬的深色連續(xù)模塊。輔助校正圖形為2×3(或3×2)個模塊組成的,位于碼圖邊緣的特殊圖形,其中符號邊緣的3模塊序列中心模塊為深色,其余模塊為淺色,深色模塊位置位于附近校正折線延長線與符號邊緣相交的模塊位置。對不同版本的碼圖,其校正圖形的排布各有差異,各版本校正折線的r與k的值以及平分為k模塊寬的個數(shù)m取值滿足關(guān)系:n=r+m*k(n≥3),(詳見漢信碼國家標準)。而對于版本小于3的碼圖,則沒有任何校正圖形。

圖7-1 漢信碼的校正圖形

圖7-2 校正圖形的中心坐標

圖7-3 輔助校正圖形的中心坐標

URI模式的設(shè)計

URI是互聯(lián)網(wǎng)工程方面的標準化組織IETF制定的RFC3986標準中規(guī)定的統(tǒng)一資源標識符語義結(jié)構(gòu),由協(xié)議、主機名、域名、默認端口號、資源路徑等組成,順序與結(jié)構(gòu)固定,然而相關(guān)真正使用的協(xié)議域名等相對很少,將各部分單獨進行編碼,可極大提高編碼效率。

漢信碼的URI模式是專門針對二維碼的移動應(yīng)用量身定制的一種信息編碼模式。將字符按照使用頻率分為三個字符集,分別為URI-A,URI-B,URI-C。其中URI-A是最常用的字符集,包含小寫字母、數(shù)字、部分協(xié)議頭、常用頂級域名等62個最常用字符,滿足大部分URI編碼需求,可滿足大部分短網(wǎng)址的查找需求。URI-B則涉及百分號編碼、ASCII中的其他符號、GS1關(guān)鍵字等。URI-C可視為A和B的總集,在大多數(shù)情況下,只需查找URIA字符集中的62個字符,并結(jié)合URI-B中的百分號編碼,即可完成一個URI的編碼或解碼。通過這種方式,極大提高了二維碼承載短網(wǎng)址的效率,相同的網(wǎng)址,使用漢信碼較其它碼制的編碼效率更高,碼圖面積更小。

漢信碼URI模式的模式指示符為(1110 0010)bin,URI模式的模式結(jié)束符為(111)bin。

輸入的URI字符串的分析方法和步驟如下:

a)按照下述規(guī)則對輸入的URI字符串進行分析,查找并記錄輸入URI字符串的每個字符或字符序列的初始編碼:

1)如果字符“%”后面有兩個字符,并且這些“%XX”字符序列符合RFC 3986定義的百分號編碼的要求,則對這些“%XX”字符使用百分號編碼字符方法。

2)如果字符或字符序列可以使用URI-A字符集和URI-C字符集進行編碼,則首選使用URI-A字符集。

3)如果字符或字符序列可以使用URI-B字符集和URI-C字符集進行編碼,則首選使用URI-B字符集。

4)如果使用URI-A字符集在同一位置對字符或字符集序列進行編碼有兩種方式,則使用編碼值較大的方法作為首選方法。

5)如果使用URI-C字符集有兩種方法在同一位置對字符或字符集序列進行編碼,則使用編碼值較大的方法作為首選方法。

b)用a)進行初步分析之后,對數(shù)據(jù)分析結(jié)果進行優(yōu)化步驟如下:

1)如果字符串使用URI-A字符集和URI-B字符集共同進行編碼,計算共計產(chǎn)生的編碼位數(shù)。計算單獨使用URI-C字符集對該字符串進行編碼產(chǎn)生的編碼位數(shù)。只有在前者小于或等于后者時,才使用URI-C字符集進行編碼。

2)如果字符串使用URI-B字符集和URI-A字符集進行編碼,計算共計產(chǎn)生的編碼位數(shù)。計算單獨使用URI-C字符集對該字符串進行編碼產(chǎn)生的編碼位數(shù)。只有在前者小于或等于后者時,才使用URI-C字符集進行編碼。

3)如果字符串使用URI-A字符集和URI-C字符集進行編碼,計算共計產(chǎn)生的編碼位數(shù)。計算單獨使用URI-C字符集對該字符串進行編碼產(chǎn)生的編碼位數(shù)。只有在前者小于或等于后者時,才使用URI-C字符集進行編碼。

4)如果字符串使用URI-B字符集和URI-C字符集進行編碼,計算共計產(chǎn)生的編碼位數(shù)。計算單獨使用URI-C字符集對該字符串進行編碼產(chǎn)生的編碼位數(shù)。只有在前者小于或等于后者時,才使用URI-C字符集進行編碼。

5)如果字符串使用URI-C字符集和URI-A字符集進行編碼,計算共計產(chǎn)生的編碼位數(shù)。計算單獨使用URI-C字符集對該字符串進行編碼產(chǎn)生的編碼位數(shù)。只有在前者小于或等于后者時,才使用URI-C字符集進行編碼。

6)如果字符串使用URI-C字符集和URI-B字符集進行編碼,計算共計產(chǎn)生的編碼位數(shù)。計算單獨使用URI-C字符集對該字符串進行編碼產(chǎn)生的編碼位數(shù)。只有在前者小于或等于后者時,才使用URI-C字符集進行編碼。

7)重復(fù)上述步驟中描述的步驟,直到不再進行優(yōu)化。

根據(jù)以上分析結(jié)果,用字符集指示符和相應(yīng)的字符集對輸入的URI字符串進行編碼,字符集指示符編碼,見表1(下頁):

表1

Unicode模式的設(shè)計

漢信碼的Unicode模式的主要技術(shù)過程是,對Unicode字符集的UTF-8編碼模式,采用自適應(yīng)游程編碼的數(shù)據(jù)編碼模式,將其轉(zhuǎn)換為漢信碼的數(shù)據(jù)碼字流。在將Unicode轉(zhuǎn)換為漢信碼信息編碼過程中,設(shè)立了4種編碼格式(1字節(jié)格式、2字節(jié)格式、3字節(jié)格式和4字節(jié)格式),分別對UTF-8字符集采用不同編碼模式進行預(yù)編碼,對所得到的預(yù)編碼長度進行比較,選取最有效的編碼模式,從而有效保證了編碼效率。漢信碼是目前已經(jīng)標準化的ISO各種二維碼碼制中唯一支持Unicode模式編碼的碼制,同時編碼效率進行了充分優(yōu)化,編碼效率與原固有信息編碼模式效率相近或更優(yōu)。輸入數(shù)據(jù)由可用1字節(jié)、2字節(jié)、3字節(jié)或4字節(jié)表示的字符組成。Unicode模式應(yīng)按照自適應(yīng)數(shù)據(jù)分析算法分析輸入數(shù)據(jù)。首先,將輸入數(shù)據(jù)劃分并組合成1字節(jié)格式、2字節(jié)格式、3字節(jié)格式或4字節(jié)格式預(yù)編碼子序列,然后按照游程數(shù)據(jù)壓縮算法對輸入數(shù)據(jù)的每個子序列進行編碼。使用以下步驟分析編碼數(shù)據(jù):

a)對輸入數(shù)據(jù)進行初步分析,得到初始字節(jié)模式分析結(jié)果:

1)讀取數(shù)據(jù)的前12個字節(jié)進行分析:

①如果整個數(shù)據(jù)長度小于12字節(jié),則跳轉(zhuǎn)到③;否則,轉(zhuǎn)到下一步。

②使用1字節(jié)格式、2字節(jié)格式、3字節(jié)格式和4字節(jié)格式對前12字節(jié)數(shù)據(jù)進行編碼,選擇同字節(jié)格式中(編碼位/字節(jié)計數(shù))具有最低預(yù)編碼比特率的字節(jié)模式作為前12字節(jié)的初始字節(jié)模式。如果此字節(jié)模式為4字節(jié)格式,則轉(zhuǎn)到⑧;否則,轉(zhuǎn)到下一步。

③讀取前9個字節(jié)的數(shù)據(jù),如果整個數(shù)據(jù)長度小于9個字節(jié),則轉(zhuǎn)到⑤;如為9個字節(jié),轉(zhuǎn)到下一步。

④使用1字節(jié)格式、3字節(jié)格式預(yù)編碼前9字節(jié)數(shù)據(jù),選擇同字節(jié)格式中編碼比特率最低的字節(jié)模式作為前9字節(jié)的初始字節(jié)模式。如果此字節(jié)格式為3字節(jié)格式,則轉(zhuǎn)到⑧;否則,轉(zhuǎn)到下一步。

⑤讀取前6個字節(jié)的數(shù)據(jù),如果整個數(shù)據(jù)長度小于6個字節(jié),則轉(zhuǎn)到⑦;如滿足6個字節(jié),轉(zhuǎn)到下一步。

⑥使用1字節(jié)格式、2字節(jié)格式預(yù)編碼前6字節(jié)數(shù)據(jù),選擇字節(jié)編碼比特率最低的字節(jié)模式作為前6字節(jié)的初始字節(jié)模式。如果此字節(jié)格式為2字節(jié)格式,則轉(zhuǎn)到⑧;否則,轉(zhuǎn)到下一步。

⑦使用1字節(jié)模式作為第一個字節(jié)的初始字節(jié)模式。

⑧利用初始數(shù)據(jù)字節(jié)序列中的初始字節(jié)模式,將數(shù)據(jù)的下一個分析位置設(shè)置為初始字節(jié)序列的下一個字節(jié)。

2)對于下一段數(shù)據(jù)分析位置,如果到達數(shù)據(jù)的末尾,則初始分析結(jié)束;否則,讀取下一個12字節(jié)的數(shù)據(jù),進行分析:

①如果下一個分析位置的整個數(shù)據(jù)長度小于12字節(jié),則轉(zhuǎn)到③;如長度滿足12字節(jié),轉(zhuǎn)到下一步。

②使用1字節(jié)格式、2字節(jié)格式、3字節(jié)格式和4字節(jié)格式預(yù)編碼接下來的12字節(jié)數(shù)據(jù),選擇同字節(jié)格式中(編碼位/字節(jié)計數(shù)器)編碼比特率最低的字節(jié)格式作為下一個12字節(jié)的初始字節(jié)格式。如果此字節(jié)模式為4字節(jié)格式,則轉(zhuǎn)到⑧;否則,轉(zhuǎn)到下一步。

③讀取頭9字節(jié)的數(shù)據(jù),如果該數(shù)據(jù)長度小于9字節(jié),則轉(zhuǎn)到⑤;否則,轉(zhuǎn)到下一步。

④使用1字節(jié)格式、3字節(jié)格式對該9字節(jié)數(shù)據(jù)進行編碼,選擇同字節(jié)格式中編碼比特率最低的字節(jié)模式作為9字節(jié)的初始字節(jié)格式。如果此字節(jié)模式為3字節(jié)格式,則轉(zhuǎn)到⑧;否則,轉(zhuǎn)到下一步。

⑤讀取頭6個字節(jié)的數(shù)據(jù),如果下一個分析位置的整個數(shù)據(jù)長度小于6個字節(jié),則轉(zhuǎn)到⑦;否則,轉(zhuǎn)到下一步。

⑥使用1字節(jié)格式和2字節(jié)格式對該6字節(jié)數(shù)據(jù)進行編碼,選擇同字節(jié)格式中編碼比特率最低的字節(jié)格式作為該6字節(jié)的初始字節(jié)模式。如果此字節(jié)格式為2字節(jié)格式,則轉(zhuǎn)到⑧;否則,轉(zhuǎn)到下一步。

⑦使用1字節(jié)格式作為下一個字節(jié)的初始字節(jié)格式。

⑧如果數(shù)據(jù)系列的初始字節(jié)模式與先前數(shù)據(jù)字節(jié)系列的先前初始字節(jié)模式不同,則將初始字節(jié)模式設(shè)置為數(shù)據(jù)系列的數(shù)據(jù)模式,并通過增加字節(jié)序列的長度來移動數(shù)據(jù)的下一個分析位置,返回2;否則,如果數(shù)據(jù)字節(jié)序列的初始字節(jié)模式與先前數(shù)據(jù)的先前初始字節(jié)模式相同,則分析并決定是否將兩個數(shù)據(jù)字節(jié)序列合并為一個。數(shù)據(jù)組合分析是為了計算和比較使用兩個單獨字節(jié)模式的編碼位以及用于集成到一個單字節(jié)序列的編碼位:

?如果集成到一個字節(jié)序列中的編碼位數(shù)不大于使用兩個單獨字節(jié)模式的編碼位數(shù),則不要更改前一個字節(jié)模式進行編碼,而是要注意更改每個字節(jié)的長度、差值和最小值字節(jié)模式;

?如果集成為一個字節(jié)模式的編碼位數(shù)大于使用兩個單獨字節(jié)模式的編碼位數(shù),則啟動一個新的字節(jié)模式進行編碼;

?對于上述兩種情況,通過添加新的已分析字節(jié)模式的長度來移動下一個分析位置。

b)優(yōu)化初始字節(jié)模式分析結(jié)果,具體步驟如下:

1)如果數(shù)據(jù)序列與之前的數(shù)據(jù)序列使用相同的字節(jié)模式。計算兩個相鄰數(shù)據(jù)序列的兩個單獨字節(jié)模式(不同長度、差值和最小值)的編碼位和兩個數(shù)據(jù)序列的單字節(jié)模式的編碼位:

①如果集成到一個單一字節(jié)模式的編碼位大于使用兩個單獨字節(jié)模式的編碼位,則無需更改字節(jié)模式;

②如果集成到一個單一的字節(jié)模式的編碼位不大于使用兩個單獨的字節(jié)模式的編碼位,則將兩個單獨的字節(jié)模式集成為一個單字節(jié)模式,但要注意改變長度,差值和最小值的每個字節(jié)的字節(jié)模式。

2)如果2字節(jié)模式的總字節(jié)長度小于16。使用兩個單獨的字節(jié)模式(不同的長度、差和最小值)計算兩個相鄰數(shù)據(jù)序列的編碼位,并使用一個本地單字節(jié)模式(1字節(jié)模式)計算兩個數(shù)據(jù)序列的編碼位:

①如果集成到一個本地單字節(jié)模式的編碼位不少于使用兩個單獨字節(jié)模式的編碼位,則不必更改字節(jié)模式;

②如果集成到一個本地單字節(jié)模式的編碼位少于使用兩個單獨的字節(jié)模式的編碼位,則將兩個獨立的字節(jié)模式集成到一個本地單字節(jié)模式。

3)重復(fù)此步驟中描述的步驟,直到無法進行任何優(yōu)化為止。

利用以上的分析結(jié)果,使用以下步驟對輸入數(shù)據(jù)進行編碼:

a)對于1、2、3或4字節(jié)格式的每個數(shù)據(jù)序列,選擇相應(yīng)的字節(jié)格式指示符作為編碼的起始位,見表2。

表2

b)Unicode模式下字節(jié)模式計數(shù)器的編碼格式見表3,對該字節(jié)模式的數(shù)據(jù)序列的字節(jié)格式計數(shù)器進行編碼(字節(jié)模式計數(shù)器基于字節(jié)模式,而不是字節(jié)長度,例如計數(shù)器2的3字節(jié)模式具有6字節(jié)):

表3

c)找出每個1、2、3或4字節(jié)分組的字節(jié)序列最小值,計算并重新編碼1、2、3或4字節(jié)組的每個字節(jié)序列與分組字節(jié)序列最小值相比的所有差異。此外,需要將1、2、3或4個字節(jié)各字節(jié)分組的差異長度標識符添加到編碼位流中,該指示符采用不同的長度表示方法可以支持多個字節(jié)分組差異值的長度。

猜你喜歡
字節(jié)二維碼編碼
生活中的編碼
No.8 字節(jié)跳動將推出獨立出口電商APP
二維碼
小康二維碼
《全元詩》未編碼疑難字考辨十五則
子帶編碼在圖像壓縮編碼中的應(yīng)用
No.10 “字節(jié)跳動手機”要來了?
Genome and healthcare
輕量級分組密碼Midori64的積分攻擊
二維碼讓政務(wù)公開更直接
犍为县| 运城市| 临颍县| 平度市| 通河县| 平南县| 酉阳| 汶上县| 容城县| 辉县市| 青神县| 土默特右旗| 轮台县| 枣强县| 沁源县| 定兴县| 灯塔市| 探索| 修文县| 武定县| 仪陇县| 平度市| 东港市| 夏河县| 丰顺县| 宁德市| 保亭| 衡阳县| 吉林省| 二手房| 璧山县| 东丰县| 长宁县| 托克逊县| 石首市| 宜良县| 根河市| 曲阳县| 运城市| 临潭县| 那坡县|