国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)編解碼方法及其編解碼器的制作方法

      文檔序號(hào):6532795閱讀:223來源:國(guó)知局
      專利名稱:一種數(shù)據(jù)編解碼方法及其編解碼器的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種通用的數(shù)據(jù)編解碼方法,特別是涉及一種結(jié)構(gòu)化二進(jìn)制碼流的編解碼方法及其編解碼器。
      背景技術(shù)
      在軟件開發(fā)過程中,伴隨著必不可少的軟件測(cè)試活動(dòng),這些活動(dòng)包括編碼階段的白盒測(cè)試、軟件子系統(tǒng)間的集成測(cè)試和軟件產(chǎn)品的系統(tǒng)測(cè)試。
      在目前流行的針對(duì)C/C++商用白盒測(cè)試工具中,諸如CppUnit、RationalTest RealTime等,對(duì)于單元測(cè)試數(shù)據(jù)的構(gòu)造特別是針對(duì)復(fù)雜結(jié)構(gòu)的數(shù)據(jù)構(gòu)造,都是在代碼或是腳本中進(jìn)行的,通過對(duì)結(jié)構(gòu)成員字段賦值的方式,生成相應(yīng)的數(shù)據(jù)構(gòu)造的靜態(tài)代碼,和被測(cè)代碼一同編譯從而達(dá)到對(duì)被測(cè)試代碼進(jìn)行白盒測(cè)試的目的;另一方面對(duì)測(cè)試結(jié)果的處理也是通過相應(yīng)的測(cè)試代碼對(duì)結(jié)果成員字段取值并加以判斷,從而完成對(duì)被測(cè)結(jié)果的分析。另外在進(jìn)行白盒方式的軟件測(cè)試活動(dòng),也可以不借助商用測(cè)試工具,在這種方式下一種比較通用的模式是,自己進(jìn)行對(duì)測(cè)試用例的組織和管理,測(cè)試數(shù)據(jù)的生成和前面提到商用測(cè)試工具中的實(shí)現(xiàn)方式基本相同。
      在針對(duì)軟件的集成測(cè)試和系統(tǒng)測(cè)試活動(dòng)中,自行開發(fā)的軟件測(cè)試工具能比較好的滿足特定領(lǐng)域軟件測(cè)試的需求;通過測(cè)試工具來模擬需要的軟件子系統(tǒng)或系統(tǒng)實(shí)現(xiàn)對(duì)被測(cè)試對(duì)象的測(cè)試。在這些測(cè)試工具的開發(fā)中不可避免會(huì)涉及到被測(cè)軟件中已經(jīng)定義的數(shù)據(jù)結(jié)構(gòu)或是標(biāo)準(zhǔn)協(xié)議文檔中定義的數(shù)據(jù)結(jié)構(gòu),在工具實(shí)現(xiàn)中需要構(gòu)造這些結(jié)構(gòu)的數(shù)據(jù)碼流;目前通用的做法是在特定工具開發(fā)語言中通過對(duì)成員字段賦值的方式,生成相應(yīng)的數(shù)據(jù)構(gòu)造的靜態(tài)代碼,在代碼執(zhí)行中完成對(duì)數(shù)據(jù)碼流的構(gòu)造;另外在處理被測(cè)對(duì)象的結(jié)構(gòu)碼流時(shí),通過將碼流轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)結(jié)構(gòu),在特定工具開發(fā)語言中通過相應(yīng)的代碼實(shí)現(xiàn)對(duì)結(jié)構(gòu)字段成員的取值實(shí)現(xiàn)對(duì)數(shù)據(jù)的解碼。
      從上面看出,無論是在針對(duì)軟件的白盒測(cè)試,還是集成和系統(tǒng)測(cè)試,在測(cè)試過程中都遇到對(duì)這種數(shù)據(jù)碼流構(gòu)和解析的問題,對(duì)其簡(jiǎn)要總結(jié)可以看出目前采用的一種通用的處理模式那就是通過引用被測(cè)試系統(tǒng)中已經(jīng)定義的結(jié)構(gòu),在靜態(tài)代碼中通過對(duì)結(jié)構(gòu)字段賦值和取值操作完成數(shù)據(jù)碼流的構(gòu)造和解析。這種方式的最大缺點(diǎn)就是數(shù)據(jù)的構(gòu)造和解析是和代碼綁定在一起的,在書寫額外代碼的同時(shí),數(shù)據(jù)的變化會(huì)導(dǎo)致代碼的變動(dòng)和重復(fù)編譯。另外這種用于測(cè)試目的代碼或是測(cè)試工具,會(huì)在編譯時(shí)依賴于被測(cè)代碼,當(dāng)被測(cè)代碼做了版本的改動(dòng),特別是測(cè)試代碼或是工具涉及到的數(shù)據(jù)結(jié)構(gòu)變化時(shí),也將導(dǎo)致測(cè)試代碼和測(cè)試工具的重新編譯。

      發(fā)明內(nèi)容
      本發(fā)明所要解決的技術(shù)問題在于提供一種數(shù)據(jù)編解碼方法及其編解碼器,用于解決現(xiàn)有技術(shù)中數(shù)據(jù)發(fā)生變化時(shí)需重新編譯測(cè)試代碼和測(cè)試工具的缺點(diǎn)。
      為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種數(shù)據(jù)編解碼方法,適應(yīng)于通用編解碼器,其特征在于,包括如下步驟步驟11提取被測(cè)試對(duì)象中數(shù)據(jù)結(jié)構(gòu)的定義信息,生成以自定義格式表示的結(jié)構(gòu)信息數(shù)據(jù);步驟12讀取所述自定義格式元素中結(jié)構(gòu)的成員字段數(shù)據(jù),并通過數(shù)據(jù)編輯接口編輯結(jié)構(gòu)的成員字段數(shù)據(jù);步驟13調(diào)用所述通用編碼器的接口,并由所述結(jié)構(gòu)信息數(shù)據(jù)、成員字段數(shù)據(jù)構(gòu)造結(jié)構(gòu)的二進(jìn)制碼流數(shù)據(jù);及步驟14根據(jù)所述自定義格式的結(jié)構(gòu)信息數(shù)據(jù),從所述二進(jìn)制碼流數(shù)據(jù)中獲取結(jié)構(gòu)成員字段數(shù)據(jù)來進(jìn)行解碼。
      所述的數(shù)據(jù)編解碼方法,其中,所述提取采用的方式隨所述數(shù)據(jù)結(jié)構(gòu)的定義方式而變化。
      所述的數(shù)據(jù)編解碼方法,其中,所述自定義格式采用可擴(kuò)展標(biāo)記語言XML(Extensible Markup Language)格式。
      所述的數(shù)據(jù)編解碼方法,其中,由XML的多個(gè)元素描述所述數(shù)據(jù)結(jié)構(gòu)的單個(gè)成員字段數(shù)據(jù)。
      所述的數(shù)據(jù)編解碼方法,其中,所述成員字段數(shù)據(jù)包括默認(rèn)值、編解碼方式和在所述數(shù)據(jù)結(jié)構(gòu)內(nèi)的相對(duì)偏移信息。
      所述的數(shù)據(jù)編解碼方法,其中,所述編解碼方式的XML元素值與所述通用編解碼器中的一組編解碼函數(shù)中的一個(gè)編碼函數(shù)相對(duì)應(yīng)。
      所述的數(shù)據(jù)編解碼方法,其中,用于所述成員字段數(shù)據(jù)的操作包括獲取結(jié)構(gòu)信息數(shù)據(jù),并以XML格式定義返回;通過結(jié)構(gòu)和成員字段的名稱修改XML格式元素中結(jié)構(gòu)的成員字段的取值;及通過結(jié)構(gòu)和成員字段的名稱獲取XML格式元素中結(jié)構(gòu)的成員字段的取值。
      所述的數(shù)據(jù)編解碼方法,其中,還包括單個(gè)結(jié)構(gòu)成員字段的編碼過程,該過程又包括步驟81從通用編解碼器的XML格式元素中獲取結(jié)構(gòu)的成員字段數(shù)據(jù),包括編碼、取值和偏移信息;及步驟82根據(jù)所述結(jié)構(gòu)成員字段的編碼信息和取值信息,調(diào)用編碼信息對(duì)應(yīng)的編碼函數(shù),生成所述結(jié)構(gòu)成員字段的二進(jìn)制碼流。
      所述的數(shù)據(jù)編解碼方法,其中,還包括單個(gè)結(jié)構(gòu)成員字段的解碼過程,該過程又包括步驟91從XML格式元素中讀取結(jié)構(gòu)成員字段的解碼、長(zhǎng)度和相對(duì)偏移信息;步驟92根據(jù)相對(duì)偏移和長(zhǎng)度信息,從結(jié)構(gòu)碼流的相對(duì)偏移處獲取成員字段的碼流;及步驟93根據(jù)結(jié)構(gòu)成員字段的解碼信息調(diào)用相應(yīng)的解碼函數(shù),對(duì)成員字段的碼流進(jìn)行解碼。
      為了實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種由上述數(shù)據(jù)編解碼方法實(shí)現(xiàn)的編解碼器,其特征在于,包括一結(jié)構(gòu)信息提取和保存模塊,用于提取被測(cè)試對(duì)象中數(shù)據(jù)結(jié)構(gòu)的定義信息,及在所述自定義格式的元素中保存結(jié)構(gòu)信息數(shù)據(jù)、結(jié)構(gòu)成員字段數(shù)據(jù);一數(shù)據(jù)編輯接口模塊,連接所述結(jié)構(gòu)信息提取和保存模塊,用于編輯所述結(jié)構(gòu)成員字段的取值;及一編解碼模塊,連接所述結(jié)構(gòu)信息提取和保存模塊,用于構(gòu)造所述碼流數(shù)據(jù),從所述碼流數(shù)據(jù)中獲取所述結(jié)構(gòu)成員字段的取值信息。
      所述的編解碼器,其中,所述數(shù)據(jù)編輯接口模塊包括圖形用戶界面GUI(Graphic User Interface)方式、腳本方式的數(shù)據(jù)編輯接口,其中所述腳本包括Python或TCL(Tool Command Language)。
      所述的編解碼器,其中,還包括腳本命令方式的編輯接口,由腳本語言提供的命令擴(kuò)展機(jī)制擴(kuò)展腳本命令實(shí)現(xiàn)。
      本發(fā)明對(duì)現(xiàn)有技術(shù)中數(shù)據(jù)的構(gòu)造和解析是和代碼綁定在一起的情況,在書寫額外代碼的同時(shí),數(shù)據(jù)的變化不會(huì)導(dǎo)致代碼的變動(dòng)和重復(fù)編譯;對(duì)于用于測(cè)試目的代碼或是測(cè)試工具,當(dāng)其數(shù)據(jù)結(jié)構(gòu)變化時(shí),不需要對(duì)此重新編譯。此外,本發(fā)明實(shí)現(xiàn)的編解碼器通過提取被測(cè)試軟件對(duì)象中的結(jié)構(gòu)定義信息即可實(shí)現(xiàn)對(duì)結(jié)構(gòu)數(shù)據(jù)的編解碼,同時(shí)還提供了豐富的數(shù)據(jù)編輯接口。
      以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的限定。


      圖1是編碼器的應(yīng)用框架圖;圖2是使用解碼器的接口進(jìn)行數(shù)據(jù)編輯的一個(gè)接口層次圖;圖3是單個(gè)結(jié)構(gòu)成員字段的編碼流程圖;及圖4是單個(gè)結(jié)構(gòu)成員字段的解碼流程圖。
      其中,附圖標(biāo)記10 結(jié)構(gòu)定義文件模塊11 通用編解碼器110編解碼模塊111數(shù)據(jù)編輯接口模塊112結(jié)構(gòu)信息提供和保存模塊12 應(yīng)用程序模塊具體實(shí)施方式
      本發(fā)明提出了一種新的數(shù)據(jù)編解碼方法,使用這種方法實(shí)現(xiàn)的編解碼器通過提取被測(cè)試軟件對(duì)象中的結(jié)構(gòu)定義信息即可實(shí)現(xiàn)對(duì)結(jié)構(gòu)數(shù)據(jù)的編解碼。該新的數(shù)據(jù)編解碼方法,其編碼實(shí)現(xiàn)的主要步驟如下
      步驟A1提取數(shù)據(jù)結(jié)構(gòu)的定義信息,生成以自定義XML格式表示的結(jié)構(gòu)信息數(shù)據(jù);步驟A2通過編輯接口編輯結(jié)構(gòu)成員字段的數(shù)據(jù);步驟A3調(diào)用編碼接口構(gòu)造結(jié)構(gòu)的碼流數(shù)據(jù)。
      其中,步驟A1的主要作用在于提取結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu)定義信息,對(duì)于提取的方式可以針對(duì)不同的結(jié)構(gòu)定義方式采用相應(yīng)的提取方式,本發(fā)明的實(shí)例描述中針對(duì)以標(biāo)準(zhǔn)C定義的結(jié)構(gòu),對(duì)于諸如ANS.1方式等其它的結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)定義本發(fā)明的處理方式一致。
      其解碼實(shí)現(xiàn)的主要步驟如下步驟B1提取數(shù)據(jù)結(jié)構(gòu)的定義信息,生成以自定義XML格式表示的結(jié)構(gòu)信息數(shù)據(jù);步驟B2根據(jù)XML格式的結(jié)構(gòu)描述信息,對(duì)結(jié)構(gòu)的碼流進(jìn)行解碼。
      使用本發(fā)明的編解碼方法實(shí)現(xiàn)的編解碼器提供了豐富的數(shù)據(jù)編輯接口,可提供圖形化的數(shù)據(jù)編輯接口,也可通過在現(xiàn)有的腳本語言中嵌入新的腳本命令來提供腳本方式的數(shù)據(jù)編輯接口等。
      綜合上述本發(fā)明的編解碼方法,其特點(diǎn)如下(1),采用從結(jié)構(gòu)的定義源中提取結(jié)構(gòu)的定義信息,并以自定義格式的XML表示之;(2),依賴于以XML表示的結(jié)構(gòu)信息提供結(jié)構(gòu)的成員變量數(shù)據(jù)編輯接口,結(jié)構(gòu)的成員變量數(shù)據(jù)也保存在自定義格式的XML元素中;(3),依賴于以XML表示的結(jié)構(gòu)信息和保存的數(shù)據(jù)提供對(duì)結(jié)構(gòu)數(shù)據(jù)碼流的構(gòu)造;(4),依賴于以XML表示的結(jié)構(gòu)信息提供對(duì)結(jié)構(gòu)化碼流的解碼操作,即從結(jié)構(gòu)化的碼流中獲取結(jié)構(gòu)成員字段數(shù)據(jù)。
      下面結(jié)合附圖對(duì)技術(shù)方案中的要點(diǎn)數(shù)據(jù)結(jié)構(gòu)信息提取及表示、結(jié)構(gòu)成員變量的編輯接口和消息的編解碼等實(shí)施做詳細(xì)的描述第一結(jié)構(gòu)定義信息的提取及表示通過分析結(jié)構(gòu)的定義信息,并以自定義格式表示該結(jié)構(gòu)信息,所要分析的結(jié)構(gòu)信息可為標(biāo)準(zhǔn)C中的基本數(shù)據(jù)類型或是復(fù)雜自定義數(shù)據(jù)類型,ASN.1格式定義的數(shù)據(jù)結(jié)構(gòu),或是其它結(jié)構(gòu)化數(shù)據(jù)類型,在實(shí)施中根據(jù)不同的應(yīng)用而有所區(qū)別。
      本發(fā)明的編解碼方法使用了XML來表示結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu)定義信息,同時(shí)結(jié)構(gòu)成員字段取值信息也存儲(chǔ)在XML格式的文檔中。
      XML是W3C的一種建議。從組成結(jié)構(gòu)來看,一個(gè)XML文檔包含一個(gè)或是多個(gè)元素,由一個(gè)起始標(biāo)志符和停止標(biāo)志符標(biāo)記其界限,每一個(gè)元素有起始標(biāo)志符和停止標(biāo)志符,一個(gè)元素可能具有一個(gè)值,元素值置于其起始標(biāo)志符和停止標(biāo)志符之間。
      本發(fā)明使用XML的多個(gè)元素來描述結(jié)構(gòu)的單個(gè)成員信息,成員信息包括數(shù)據(jù)類型、默認(rèn)值、編解碼方式和在結(jié)構(gòu)內(nèi)的相對(duì)偏移信息,再由成員的XML元素描述信息組成對(duì)整個(gè)結(jié)構(gòu)的描述;其中用于描述結(jié)構(gòu)成員信息的XML元素中,編解碼方式元素的元素值對(duì)應(yīng)到通用編解碼器中的一組編解碼函數(shù)中的一個(gè)編碼函數(shù),使用此編解碼函數(shù)完成對(duì)該結(jié)構(gòu)成員的編碼和解碼。
      在具體實(shí)施中針對(duì)不同結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu)定義形式需要有不同的結(jié)構(gòu)信息提取方式或是說結(jié)構(gòu)信息提取的實(shí)現(xiàn)方案,相同的是這些結(jié)構(gòu)的信息最后都以同樣的自定義XML格式來描述。
      在針對(duì)以標(biāo)準(zhǔn)C定義的復(fù)雜數(shù)據(jù)類型,可以采用靜態(tài)信息提取技術(shù)獲取結(jié)構(gòu)信息,在提取的結(jié)構(gòu)信息基礎(chǔ)上生成以XML格式描述的結(jié)構(gòu)信息。
      在XML自定義格式中存在如下名稱的元素&lt;VALUE&gt;...&lt;/VALUE&gt;
      &lt;OFFSET&gt;...&lt;/OFFSET&gt;
      &lt;FUNNAME&gt;...&lt;/FUNNAME&gt;
      上述三個(gè)元素分別用來描述結(jié)構(gòu)元素的取值,結(jié)構(gòu)成員字段在結(jié)構(gòu)中的相對(duì)偏移,結(jié)構(gòu)成員字段的編解碼信息;在實(shí)施上元素名稱是可以根據(jù)方便性來自行定義,名稱的不同不會(huì)影響通用編解碼器的實(shí)施,重要的是這些元素的值所描述的信息和體現(xiàn)出的本發(fā)明的編解碼思想和精神。
      XML中編解碼信息元素(上面所說XML中的FUNNAME元素)說明編解碼信息元素的取值和編解碼器中的編解碼函數(shù)是對(duì)應(yīng)的,能夠編解碼的結(jié)構(gòu)成員字段的類型是用限的,所以XML中編解碼信息元素的取值也是有限的,不同的結(jié)構(gòu)字段類型對(duì)應(yīng)的編碼描述信息可以配置,在生成結(jié)構(gòu)成員字段的編解碼信息元素時(shí)使用。
      第二結(jié)構(gòu)的成員變量編輯接口圖1所示是編碼器的應(yīng)用框架圖,由結(jié)構(gòu)定義文件模塊10、通用編解碼器11和應(yīng)用程序模塊12組成,其中通用編解碼器11由編解碼模塊110、數(shù)據(jù)編輯接口模塊111和結(jié)構(gòu)信息提供和保存模塊112組成;由將結(jié)構(gòu)定義文件模塊11中的文件輸入到通用編解碼器11中進(jìn)行處理,輸出數(shù)據(jù)的編解碼結(jié)構(gòu)到應(yīng)用程序模塊12中。
      編解碼器中XML格式的數(shù)據(jù)中包含結(jié)構(gòu)的定義信息,同時(shí)也包含結(jié)構(gòu)成員字段的當(dāng)前取值信息,編輯接口主要是針對(duì)結(jié)構(gòu)成員字段的取值信息進(jìn)行編輯;編輯的對(duì)象是XML中結(jié)構(gòu)成員字段的描述元素VALUE的取值。
      舉例把一個(gè)成員的取值編輯為1后,其VALUE元素如下&lt;VALUE&gt;1&lt;/VALUE&gt;
      通過訪問編解碼器中以XML格式描述的結(jié)構(gòu)信息和結(jié)構(gòu)成員字段取值信息,在此基礎(chǔ)上提供一套用戶對(duì)數(shù)據(jù)的通用的編輯接口,在此通用的編輯接口集中用戶可以自由選用其中的接口,達(dá)到自定義數(shù)據(jù)編輯功能。
      此處的通用編輯接口主要用于對(duì)XML中存儲(chǔ)的結(jié)構(gòu)成員字段數(shù)據(jù)進(jìn)行操作。
      通用的用于操作XML中結(jié)構(gòu)成員字段數(shù)據(jù)的操作主要包括(一)獲取結(jié)構(gòu)的描述信息,以自定義XML格式定義返回;(二)通過結(jié)構(gòu)和字段名稱來對(duì)XML中結(jié)構(gòu)成員的字段取值進(jìn)行修改;(三)通過結(jié)構(gòu)和字段名稱獲取XML中結(jié)構(gòu)成員的字段取值。
      圖2是從編解碼器應(yīng)用者的角度說明編解碼器的編輯接口功能,此處應(yīng)用者可以看作是接口的調(diào)用者。該圖是應(yīng)用者調(diào)用編解碼器的通用接口對(duì)其中XML結(jié)構(gòu)成員字段進(jìn)行編輯時(shí)的一個(gè)接口調(diào)用層次圖,應(yīng)用者可以通過編解碼器的接口(圖2中接口1標(biāo)識(shí))中獲取相關(guān)結(jié)構(gòu)信息和結(jié)構(gòu)字段當(dāng)前取值,通過應(yīng)用者提供的封裝后的編輯接口來編輯數(shù)據(jù),編輯后的數(shù)據(jù)通過接口1寫入到編解器中,結(jié)構(gòu)成員字段的數(shù)據(jù)值得到更新。
      在此通用編輯接口集的基礎(chǔ)上可以根據(jù)應(yīng)用場(chǎng)景來提供更豐富靈活的編輯接口,包括GUI方式的數(shù)據(jù)編輯接口和腳本方式的數(shù)據(jù)編輯接口;腳本可為Python或是TCL,可在其中通過腳本語言提供的命令擴(kuò)展機(jī)制來擴(kuò)展腳本命令,提供腳本命令方式的編輯接口。
      圖2中接口2、接口3和接口4分別是應(yīng)用者提供的封裝編輯接口,提供對(duì)數(shù)據(jù)的GUI、腳本和其它類型的編輯方式。
      第三結(jié)構(gòu)的編碼結(jié)構(gòu)的編碼是指在調(diào)用通用編解碼器的相關(guān)編輯口完成對(duì)結(jié)構(gòu)成員數(shù)據(jù)的編輯之后,構(gòu)造結(jié)構(gòu)的二進(jìn)制碼流數(shù)據(jù)。
      在編碼時(shí)遍歷編碼結(jié)構(gòu)所有成員的XML元素描述信息,通過對(duì)所有成員XML元素的解析,并實(shí)施相應(yīng)的編碼操作,完成對(duì)結(jié)構(gòu)的編碼,生成結(jié)構(gòu)的碼流數(shù)據(jù)。
      圖3是單個(gè)結(jié)構(gòu)成員字段的編碼流程圖,共有三個(gè)步驟步驟31從通用編解碼器的XML中獲取結(jié)構(gòu)成員信息,包括編碼、取值和偏移等信息;步驟32根據(jù)結(jié)構(gòu)成員的編碼信息和取值信息,調(diào)用編碼信息對(duì)應(yīng)的編碼函數(shù),生成結(jié)構(gòu)成員的二進(jìn)制碼流;步驟33添加結(jié)構(gòu)成員碼流到該結(jié)構(gòu)中的成員相對(duì)偏移地址處。
      第四結(jié)構(gòu)的解碼結(jié)構(gòu)的解碼是從結(jié)構(gòu)的二進(jìn)制碼流中獲取結(jié)構(gòu)成員字段取值信息,使用通用編解碼器中結(jié)構(gòu)的XML描述信息,可以實(shí)現(xiàn)解碼功能;XML中記錄結(jié)構(gòu)成員字段的解碼和在結(jié)構(gòu)中的相對(duì)偏移信息,通過這些信息實(shí)現(xiàn)對(duì)結(jié)構(gòu)成員字段的解碼。
      圖4是單個(gè)結(jié)構(gòu)成員字段的解碼流程圖,共有三個(gè)步驟步驟41從XML中讀取結(jié)構(gòu)成員字段的解碼、長(zhǎng)度和相對(duì)偏移等信息;步驟42根據(jù)相對(duì)偏移和長(zhǎng)度信息,從結(jié)構(gòu)碼流的相對(duì)偏移處獲取成員的碼流;步驟43根據(jù)結(jié)構(gòu)成員的解碼信息調(diào)用相應(yīng)的解碼函數(shù),對(duì)成員的碼流進(jìn)行解碼。
      本發(fā)明克服了現(xiàn)有技術(shù)中數(shù)據(jù)的構(gòu)造和解析是和代碼綁定在一起,在書寫額外代碼的同時(shí),數(shù)據(jù)的變化會(huì)導(dǎo)致代碼的變動(dòng)和重復(fù)編譯的缺點(diǎn);對(duì)于用于測(cè)試目的代碼或是測(cè)試工具,當(dāng)測(cè)試代碼或是工具涉及到的數(shù)據(jù)結(jié)構(gòu)變化時(shí),能夠不需要重新編譯測(cè)試代碼和測(cè)試工具。此外,使用本發(fā)明實(shí)現(xiàn)的編解碼器通過提取被測(cè)試軟件對(duì)象中的結(jié)構(gòu)定義信息即可實(shí)現(xiàn)對(duì)結(jié)構(gòu)數(shù)據(jù)的編解碼,同時(shí)還提供了豐富的數(shù)據(jù)編輯接口,可提供圖形化的數(shù)據(jù)編輯接口,也可通過在現(xiàn)有的腳本語言中嵌入新的腳本命令來提供腳本方式的數(shù)據(jù)編輯接口等。
      當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
      權(quán)利要求
      1.一種數(shù)據(jù)編解碼方法,適應(yīng)于通用編解碼器,其特征在于,包括步驟11提取被測(cè)試對(duì)象中數(shù)據(jù)結(jié)構(gòu)的定義信息,生成以自定義格式表示的結(jié)構(gòu)信息數(shù)據(jù);步驟12讀取所述自定義格式元素中結(jié)構(gòu)的成員字段數(shù)據(jù),并通過數(shù)據(jù)編輯接口編輯結(jié)構(gòu)的成員字段數(shù)據(jù);步驟13調(diào)用所述通用編碼器的接口,并由所述結(jié)構(gòu)信息數(shù)據(jù)、成員字段數(shù)據(jù)構(gòu)造結(jié)構(gòu)的二進(jìn)制碼流數(shù)據(jù);及步驟14根據(jù)所述自定義格式的結(jié)構(gòu)信息數(shù)據(jù),從所述二進(jìn)制碼流數(shù)據(jù)中獲取結(jié)構(gòu)成員字段數(shù)據(jù)來進(jìn)行解碼。
      2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)編解碼方法,其特征在于,所述提取采用的方式隨所述數(shù)據(jù)結(jié)構(gòu)的定義方式而變化。
      3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)編解碼方法,其特征在于,所述自定義格式采用可擴(kuò)展標(biāo)記語言XML格式。
      4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)編解碼方法,其特征在于,由XML的多個(gè)元素描述所述數(shù)據(jù)結(jié)構(gòu)的單個(gè)成員字段數(shù)據(jù)。
      5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)編解碼方法,其特征在于,所述成員字段數(shù)據(jù)包括默認(rèn)值、編解碼方式和在所述數(shù)據(jù)結(jié)構(gòu)內(nèi)的相對(duì)偏移信息。
      6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)編解碼方法,其特征在于,所述編解碼方式的XML元素值與所述通用編解碼器中的一組編解碼函數(shù)中的一個(gè)編碼函數(shù)相對(duì)應(yīng)。
      7.根據(jù)權(quán)利要求3所述的數(shù)據(jù)編解碼方法,其特征在于,用于所述成員字段數(shù)據(jù)的操作包括獲取結(jié)構(gòu)信息數(shù)據(jù),并以XML格式定義返回;通過結(jié)構(gòu)和成員字段的名稱修改XML格式元素中結(jié)構(gòu)的成員字段的取值;及通過結(jié)構(gòu)和成員字段的名稱獲取XML格式元素中結(jié)構(gòu)的成員字段的取值。
      8.根據(jù)權(quán)利要求3所述的數(shù)據(jù)編解碼方法,其特征在于,還包括單個(gè)結(jié)構(gòu)成員字段的編碼過程,該過程又包括步驟81從通用編解碼器的XML格式元素中獲取結(jié)構(gòu)的成員字段數(shù)據(jù),包括編碼、取值和偏移信息;及步驟82根據(jù)所述結(jié)構(gòu)成員字段的編碼信息和取值信息,調(diào)用編碼信息對(duì)應(yīng)的編碼函數(shù),生成所述結(jié)構(gòu)成員字段的二進(jìn)制碼流。
      9.根據(jù)權(quán)利要求3所述的數(shù)據(jù)解碼方法,其特征在于,還包括單個(gè)結(jié)構(gòu)成員字段的解碼過程,該過程又包括步驟91從XML格式元素中讀取結(jié)構(gòu)成員字段的解碼、長(zhǎng)度和相對(duì)偏移信息;步驟92根據(jù)相對(duì)偏移和長(zhǎng)度信息,從結(jié)構(gòu)碼流的相對(duì)偏移處獲取成員字段的碼流;及步驟93根據(jù)結(jié)構(gòu)成員字段的解碼信息調(diào)用相應(yīng)的解碼函數(shù),對(duì)成員字段的碼流進(jìn)行解碼。
      10.一種由權(quán)利1所述數(shù)據(jù)編解碼方法實(shí)現(xiàn)的編解碼器,其特征在于,包括一結(jié)構(gòu)信息提取和保存模塊,用于提取被測(cè)試對(duì)象中數(shù)據(jù)結(jié)構(gòu)的定義信息,及在所述自定義格式的元素中保存結(jié)構(gòu)信息數(shù)據(jù)、結(jié)構(gòu)成員字段數(shù)據(jù);一數(shù)據(jù)編輯接口模塊,連接所述結(jié)構(gòu)信息提取和保存模塊,用于編輯所述結(jié)構(gòu)成員字段的取值;及一編解碼模塊,連接所述結(jié)構(gòu)信息提取和保存模塊,用于構(gòu)造所述碼流數(shù)據(jù),從所述碼流數(shù)據(jù)中獲取所述結(jié)構(gòu)成員字段的取值信息。
      11.根據(jù)權(quán)利要求10所述的編解碼器,其特征在于,所述數(shù)據(jù)編輯接口模塊包括圖形用戶界面GUI方式、腳本方式的數(shù)據(jù)編輯接口,其中所述腳本包括Python或TCL。
      12.根據(jù)權(quán)利要求11所述的編解碼器,其特征在于,還包括腳本命令方式的編輯接口,由腳本語言提供的命令擴(kuò)展機(jī)制擴(kuò)展腳本命令實(shí)現(xiàn)。
      全文摘要
      本發(fā)明公開了一種數(shù)據(jù)編解碼方法及其編解碼器,該編解碼方法包括步驟提取被測(cè)試對(duì)象中數(shù)據(jù)結(jié)構(gòu)的定義信息,生成以自定義格式表示的結(jié)構(gòu)信息數(shù)據(jù);讀取自定義格式元素中結(jié)構(gòu)的成員字段數(shù)據(jù),并通過數(shù)據(jù)編輯接口編輯結(jié)構(gòu)的成員字段數(shù)據(jù);調(diào)用通用編碼器的接口,并由結(jié)構(gòu)信息數(shù)據(jù)、成員字段數(shù)據(jù)構(gòu)造結(jié)構(gòu)的二進(jìn)制碼流數(shù)據(jù);及根據(jù)結(jié)構(gòu)信息數(shù)據(jù),從碼流數(shù)據(jù)中獲取結(jié)構(gòu)成員字段數(shù)據(jù)來進(jìn)行解碼。本發(fā)明在數(shù)據(jù)的變化,不需變動(dòng)代碼和重復(fù)編譯;對(duì)用于測(cè)試目的代碼或是測(cè)試工具,當(dāng)數(shù)據(jù)結(jié)構(gòu)變化時(shí),也無需重新編譯,有效提高了測(cè)試的效率。通過提取被測(cè)試軟件對(duì)象中的結(jié)構(gòu)定義信息實(shí)現(xiàn)對(duì)結(jié)構(gòu)數(shù)據(jù)的編解碼,還提供了豐富的數(shù)據(jù)編輯接口。
      文檔編號(hào)G06F9/45GK1858717SQ200510039268
      公開日2006年11月8日 申請(qǐng)日期2005年5月8日 優(yōu)先權(quán)日2005年5月8日
      發(fā)明者尤培剛, 馬軍, 肖遂 申請(qǐng)人:中興通訊股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1