亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種Asn.1編碼的快速讀碼方法

文檔序號(hào):6433585閱讀:323來源:國知局
專利名稱:一種Asn.1編碼的快速讀碼方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)編碼數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種Asn. 1編碼的快速讀碼方法。
背景技術(shù)
Asn. 1 (Abstract Syntax Notation One)編碼是定義抽象數(shù)據(jù)類型規(guī)格形式的標(biāo)準(zhǔn),是用于描述數(shù)據(jù)的表示、編碼、傳輸、解碼的靈活的記法。它提供了一套正式、無歧義和精確的規(guī)則以描述獨(dú)立于特定計(jì)算機(jī)硬件的對(duì)象結(jié)構(gòu)。Asn. 1編碼是通信協(xié)議中描述數(shù)據(jù)傳輸?shù)恼綐?biāo)記,它與語言實(shí)現(xiàn)和物理表示無關(guān),與應(yīng)用的復(fù)雜度無關(guān),尤其適合表示現(xiàn)代通信應(yīng)用中那些復(fù)雜的、變化的和可擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)。Asn. 1編碼的每條編碼信息之間相互獨(dú)立,解碼時(shí)互不影響,因此在兩條編碼信息中間插入若干字節(jié)完全相同的數(shù)據(jù)如FF或 00,這些數(shù)據(jù)不包含任何信息且不會(huì)影響對(duì)信息的正確解碼,通常稱之為空閑字段。在程序進(jìn)行解碼讀碼時(shí),如何快速的跳過空閑字段,繼續(xù)對(duì)后續(xù)編碼信息進(jìn)行讀碼和解碼,是非常重要的。目前處理方法是在讀碼過程中,對(duì)每個(gè)字節(jié)進(jìn)行逐個(gè)判斷以確定是否是空閑字段,實(shí)際判斷次數(shù)等于空閑字段的字節(jié)數(shù),因此當(dāng)兩個(gè)編碼信息之間的空閑字段較長時(shí),讀碼效率非常低下。因此通過一種快速、可靠的讀碼方法能快速確定編碼信息之間空閑字段的長度,使讀碼效率不會(huì)因空閑字段字節(jié)長度變化而受到明顯影響,在Asn. 1解碼中顯得尤為重要。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種Asn. 1編碼的快速讀碼方法,解決了現(xiàn)有讀碼過程中需要逐個(gè)判斷字節(jié)是否為空閑字段的方法,能快速確定空閑字段的實(shí)際長度,大大提高了讀碼速度。本發(fā)明所采用的技術(shù)方案是,一種Asn. 1編碼的快速讀碼方法,其特征在于,包括以下步驟步驟1、按照Asn. 1編碼規(guī)則讀取編碼的標(biāo)識(shí)符八位位組,并判讀該八位位組是否為空閑字段,若不為空閑字段,則進(jìn)入步驟2,否則,進(jìn)入步驟3 ;步驟2、按照Asn. 1編碼規(guī)則讀取該編碼信息的長度八位位組,以得到該編碼信息的字節(jié)長度信息,再根據(jù)得到的字節(jié)長度信息,讀取相應(yīng)字節(jié)長度的編碼信息后,返回步驟 1并讀取下一條編碼信息;步驟3、預(yù)設(shè)空閑字段字節(jié)長度D的初始值為一固定值L,讀取該條編碼信息的前L 個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)不全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/q,再讀取該編碼信息的前L/q個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)不全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度 D的取值調(diào)整為L/2q,讀取該編碼信息的前L/2q個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;依次類推,預(yù)設(shè)空閑字段字節(jié)長度D的取值的調(diào)整規(guī)律為依次呈倍數(shù)遞減,直至讀取的字節(jié)全部為空閑字段,此時(shí)預(yù)設(shè)空閑字段字節(jié)長度D取值L/nq,進(jìn)入步驟4,其中,L、q和 η均為正整數(shù),且L為q的倍數(shù),η = 1,2,3...;步驟4、讀取該條編碼信息的前L/nq+d個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/ nq+2d,讀取該條編碼信息的前L/nq+2d個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/nq+3d,讀取該條編碼信息的前L/nq+3d個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;依次類推,預(yù)設(shè)空閑字段字節(jié)長度D取值的調(diào)整規(guī)律為依次等差增加,直至讀取的字節(jié)不全部為空閑字段,此時(shí)預(yù)設(shè)空閑字段字節(jié)長度D取值L/nq+md,進(jìn)入步驟5,其中,m和d均為正整數(shù),m = Ij 2 j 3 · · · ;步驟5、讀取該條編碼信息的前L/nq+(m-l)d+l個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/nq+(m-l)d+2,讀取該條編碼信息的前L/nq+(m-l)d+2個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/nq+ (m-1) d+3,依次類推,預(yù)設(shè)空閑字段字節(jié)長度D取值的調(diào)整規(guī)律為依次增加,直至讀取的字節(jié)不全部為空閑字段,此時(shí)預(yù)設(shè)空閑字段字節(jié)長度D取值為L/nq+(m-l)d+Z,此時(shí),確定實(shí)際空閑字段字節(jié)長度為L/nq+(m-1) d+ζ-Ι ;其中,ζ為正整數(shù),ζ = 1,2,3...;步驟6、根據(jù)步驟5得到的實(shí)際空閑字段字節(jié)長度的數(shù)值,從上一條編碼信息的最后一個(gè)字節(jié)開始跳過L/nq+(m-1) d+ζ-Ι個(gè)字節(jié)的空閑字段,再返回至步驟1讀取下一條編碼信息。步驟3中,q取值為2。本發(fā)明方法首先預(yù)設(shè)Asn. 1編碼中相鄰兩條編碼信息之間的空閑字段字節(jié)長度, 再根據(jù)讀入字節(jié)是否為空閑字段,通過依次呈倍數(shù)遞減和依次等差增加兩種規(guī)則調(diào)整空閑字段字節(jié)長度,通過較少的讀取判斷次數(shù)最終確定實(shí)際的空閑字段字節(jié)長度,所需的判斷次數(shù)與現(xiàn)有逐個(gè)字節(jié)判斷次數(shù)相比大大減少,在空閑字段字節(jié)長度大時(shí)效果更加明顯。因此,本發(fā)明方法簡(jiǎn)單,結(jié)果可靠,能很大程度提高Asn. 1編碼的讀碼和解碼速度。


圖1是利用本發(fā)明方法進(jìn)行讀碼(L = 1024且d = 16)的字節(jié)判斷次數(shù)示意圖;圖2是利用本發(fā)明方法進(jìn)行讀碼(L = 512且d = 16)的字節(jié)判斷次數(shù)示意圖;圖3是利用本發(fā)明方法進(jìn)行讀碼(L = 1024且d = 8)的字節(jié)判斷次數(shù)示意圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行詳細(xì)說明。Asn. 1編碼信息的一個(gè)字節(jié)為一個(gè)八位位組,且第一個(gè)字節(jié)為標(biāo)示符八位位組,第二個(gè)字節(jié)為標(biāo)示該編碼信息字節(jié)長度信息的長度八位位組。本發(fā)明方法首先按照Asn. 1編碼規(guī)則讀取編碼的標(biāo)識(shí)符八位位組,并判讀該八位位組是否全部為0或F,若不全部為0或 F,則判斷不是空閑字段而是編碼信息,則進(jìn)入步驟2,進(jìn)入步驟2后,按照Asn. 1編碼規(guī)則讀取該編碼信息的長度八位位組,得到該編碼信息的字節(jié)長度信息,再根據(jù)得到的字節(jié)長度信息,讀取相應(yīng)字節(jié)長度的編碼信息后,返回步驟1并讀取下一條編碼信息。如果該標(biāo)識(shí)符八位位組全部為0或F,則判斷為空閑字段,進(jìn)入步驟3,在步驟3中預(yù)設(shè)空閑字段字節(jié)長度 D的初始值為一固定值,經(jīng)過步驟3、步驟4和步驟5的數(shù)值調(diào)整,最終確定兩條編碼信息之間的實(shí)際空閑字段字節(jié)長度,在步驟6中,上一條編碼信息的最后一個(gè)字節(jié)開始跳過相應(yīng)長度的字節(jié),再返回至步驟1讀取下一條編碼信息。實(shí)施例本實(shí)施例中空閑字段實(shí)際長度為546個(gè)字節(jié),L = 1024,d = 16時(shí),Asn. 1編碼的快速讀碼方法為步驟1、按照Asn. 1編碼規(guī)則讀取編碼的標(biāo)識(shí)符八位位組,并判讀該八位位組是否為空閑字段,若不為空閑字段,則進(jìn)入步驟2,否則,進(jìn)入步驟3 ;步驟2、按照Asn. 1編碼規(guī)則讀取該編碼信息的長度八位位組,以得到該編碼信息的字節(jié)長度信息,再根據(jù)得到的字節(jié)長度信息,讀取相應(yīng)字節(jié)長度的編碼信息后,返回步驟 1并讀取下一條編碼信息;步驟3、預(yù)設(shè)空閑字段字節(jié)長度D為一固定值L,L = 1024,讀取該條編碼信息的前 1024個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;由于讀取的字節(jié)不全部為空閑字段, 將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/q,q = 2,L/q = 1024/2 = 512,再讀取該編碼信息的前512個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;由于該512個(gè)字節(jié)全部為空閑字段,此時(shí)D取值為512,此時(shí),η = 2,進(jìn)入步驟4 ;步驟4、讀取該條編碼信息的前L/nq+d個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,d = 16,L/nq+d = 512+16 = 528 ;若讀取的字節(jié)全部為空閑字段,則將D取值調(diào)整為 L/nq+2d = 528+16 = 544,讀取該條編碼信息的前544個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;由于該讀取的544個(gè)字節(jié)全部為空閑字段,則將D取值調(diào)整為L/nq+3d = 560, 讀取該條編碼信息的前560個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,由于讀取的該 560個(gè)字節(jié)不全部為空閑字段,此時(shí)D取值為560,進(jìn)入步驟5,其中,m = 3 ;步驟5、讀取該條編碼信息的前L/nq+(m-l)d+l = 560-16+1 = 545個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,由于讀取的字節(jié)全部為空閑字段,則將D取值調(diào)整為 M6,讀取該條編碼信息的前546個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,由于讀取的字節(jié)全部為空閑字段,則將D取值調(diào)整為M7,由于讀取的字節(jié)不全部為空閑字段,此時(shí)D 取值為討7,最后確定實(shí)際空閑字段字節(jié)長度為L/nq+(m-l)d+z-l = M6,此時(shí),ζ = 3 ;步驟6、根據(jù)步驟5得到的實(shí)際空閑字段字節(jié)長度為Μ6,從上一條編碼信息的最后一個(gè)字節(jié)開始跳過546個(gè)字節(jié)的空閑字段,再返回至步驟1讀取下一條編碼信息。如圖1至圖3所示,為利用本發(fā)明方法進(jìn)行Asn. 1編碼的快速讀碼方法進(jìn)行的實(shí)驗(yàn)結(jié)果示意圖,圖中橫坐標(biāo)為實(shí)際的空閑字段字節(jié)長度,縱坐標(biāo)為讀碼過程中需要讀入字節(jié)繼而判斷是否為空閑字段的次數(shù),其中,圖1中,取L = 1024且d = 16,圖2中取L = 512 且 d = 16,圖 3 中取 L = 1024 且 d = 8。由圖1和圖2對(duì)比可得,當(dāng)d—定時(shí),L越小,對(duì)于空閑字段字節(jié)長度大的編碼字節(jié)判斷次數(shù)越多,對(duì)于空閑字段字節(jié)長度小的編碼字節(jié)判斷次數(shù)越少。因此,為了減少判斷次數(shù)以實(shí)現(xiàn)本方法的快捷性,當(dāng)空閑字段的長度普遍較小時(shí),應(yīng)將L取值相對(duì)較?。环粗?,當(dāng)空閑字段的長度普遍較大時(shí),應(yīng)將L取值相對(duì)較大。由圖1和圖3對(duì)比可得,在實(shí)際空閑字段字節(jié)長度稍大于預(yù)設(shè)空閑字段字節(jié)長度的初始取值L時(shí),d取值越小,需要判斷的次數(shù)越多,因此,當(dāng)編碼中多個(gè)空閑字段的長度較為集中時(shí),可將d取值相對(duì)較小,反之應(yīng)將d取值相對(duì)較大。
權(quán)利要求
1.一種Asn. 1編碼的快速讀碼方法,其特征在于,包括以下步驟步驟1、按照Asn. 1編碼規(guī)則讀取編碼的標(biāo)識(shí)符八位位組,并判讀該八位位組是否為空閑字段,若不為空閑字段,則進(jìn)入步驟2,否則,進(jìn)入步驟3 ;步驟2、按照Asn. 1編碼規(guī)則讀取該編碼信息的長度八位位組,以得到該編碼信息的字節(jié)長度信息,再根據(jù)得到的字節(jié)長度信息,讀取相應(yīng)字節(jié)長度的編碼信息后,返回步驟1并讀取下一條編碼信息;步驟3、預(yù)設(shè)空閑字段字節(jié)長度D的初始值為一固定值L,讀取該條編碼信息的前L個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)不全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/q,再讀取該編碼信息的前L/q個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)不全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度 D的取值調(diào)整為L/2q,讀取該編碼信息的前L/2q個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;依次類推,預(yù)設(shè)空閑字段字節(jié)長度D的取值的調(diào)整規(guī)律為依次呈倍數(shù)遞減,直至讀取的字節(jié)全部為空閑字段,此時(shí)預(yù)設(shè)空閑字段字節(jié)長度D取值L/nq,進(jìn)入步驟4,其中,L、q和 η均為正整數(shù),且L為q的倍數(shù),η = 1,2,3...;步驟4、讀取該條編碼信息的前L/nq+d個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/nq+2d, 讀取該條編碼信息的前L/nq+2d個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/nq+3d,讀取該條編碼信息的前L/nq+3d個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段;依次類推,預(yù)設(shè)空閑字段字節(jié)長度D取值的調(diào)整規(guī)律為依次等差增加,直至讀取的字節(jié)不全部為空閑字段,此時(shí)預(yù)設(shè)空閑字段字節(jié)長度D取值L/nq+md,進(jìn)入步驟5,其中,m和d均為正整數(shù),m= 1,2, 3…;步驟5、讀取該條編碼信息的前L/nq+(m-l)d+l個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為L/ nq+(m-l)d+2,讀取該條編碼信息的前L/nq+(m-l)d+2個(gè)字節(jié)并判斷讀取的字節(jié)是否全部為空閑字段,若讀取的字節(jié)全部為空閑字段,則將預(yù)設(shè)空閑字段字節(jié)長度D的取值調(diào)整為 L/nq+(m-l) d+3,依次類推,預(yù)設(shè)空閑字段字節(jié)長度D取值的調(diào)整規(guī)律為依次增加,直至讀取的字節(jié)不全部為空閑字段,此時(shí)預(yù)設(shè)空閑字段字節(jié)長度D取值為L/nq+(m-l)d+z,此時(shí), 確定實(shí)際空閑字段字節(jié)長度為L/nq+(m-l)d+z-l ;其中,ζ為正整數(shù),ζ = 1,2,3...;步驟6、根據(jù)步驟5得到的實(shí)際空閑字段字節(jié)長度的數(shù)值,從上一條編碼信息的最后一個(gè)字節(jié)開始跳過L/nq+(m-l)d+Z-l個(gè)字節(jié)的空閑字段,再返回至步驟1讀取下一條編碼信肩、ο
2.按照權(quán)利要求1所述的Asn.1編碼的快速讀碼方法,其特征在于,步驟3中,q取值為2。
全文摘要
本發(fā)明公開一種Asn.1編碼的快速讀碼方法,首先按照Asn.1編碼規(guī)則讀取編碼的標(biāo)識(shí)符八位位組,判讀該八位位組是否為空閑字段,若不為空閑字段,則按照Asn.1編碼規(guī)則讀取該編碼信息的長度八位位組,再根據(jù)得到的字節(jié)長度信息,讀取相應(yīng)字節(jié)長度的編碼信息后,返回并讀取下一條編碼信息。否則,預(yù)設(shè)空閑字段字節(jié)長度的初始值為一固定值,最終確定空閑字段的實(shí)際長度,再從上一條編碼信息的最后一個(gè)字節(jié)開始跳過相應(yīng)長度的字節(jié),再返回讀取下一條編碼信息。本發(fā)明解決了現(xiàn)有讀碼過程中需要依次判斷字節(jié)是否為空閑字段的方法,能快速確定空閑字段的實(shí)際長度,大大提高了讀碼速度。
文檔編號(hào)G06F17/30GK102332018SQ20111027991
公開日2012年1月25日 申請(qǐng)日期2011年9月21日 優(yōu)先權(quán)日2011年9月21日
發(fā)明者楊祎, 王林 申請(qǐng)人:西安理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1