專利名稱:不同版本二進制數(shù)據(jù)兼容的方法及數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng)的制作方法
技術(shù)領域:
本發(fā)明涉及信息技術(shù)領域,特別涉及一種不同版本二進制數(shù)據(jù)兼容的方法及數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng)。
背景技術(shù):
通信設備在實際使用中,經(jīng)常需要涉及版本升級,而版本升級后,可能會引起配置數(shù)據(jù)和板間、設備之間通信數(shù)據(jù)格式的變化。如果通信數(shù)據(jù)和配置數(shù)據(jù)采用文本方式編碼,那么版本的升級帶來的數(shù)據(jù)格式變化是能夠自動兼容的,但是采用文本方式的配置存在一個問題是配置信息非常大時,需要把這些配置解析成程序理解的二進制方式一定的時間,往往會導致重啟時間比較長,因此該方法存在缺陷。后續(xù)我們就采用了更為先進的存儲配置方式,直接存在二進制配置,把相應的數(shù) 據(jù)使用結(jié)構(gòu)體方式存儲到文件中,重啟時,還是按照原來的結(jié)構(gòu)體進行讀取。但是采用二進制方式的配置數(shù)據(jù)和通信數(shù)據(jù),那么就不存在編解碼了,處理比較簡單。重啟時,直接讀取數(shù)據(jù)存儲到結(jié)構(gòu)體中即可恢復配置,而主控板只需要把該數(shù)據(jù)結(jié)構(gòu)體同步給備板、接口板就可以支持板間數(shù)據(jù)通信。但是,采用二進制數(shù)據(jù)最大的問題時,當版本升級時,老配置數(shù)據(jù)同新版本的程序的數(shù)據(jù)格式兼容問題,在版本升級中,老版本設備或者板卡同新版本的設備或者板卡通信數(shù)據(jù)格式兼容問題,因此,如果在架構(gòu)體中新增加數(shù)據(jù)或者刪除數(shù)據(jù)、或者修改某個數(shù)據(jù)的長度,都會導致新老版本數(shù)據(jù)的不兼容。因此,如何克服上述問題成為業(yè)內(nèi)關注的問題。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種不同版本二進制數(shù)據(jù)兼容的方法,能夠使不同版本數(shù)據(jù)兼容。一種不同版本二進制數(shù)據(jù)兼容的方法,該方法包括根據(jù)不同版本的二進制數(shù)據(jù)結(jié)構(gòu)體定義第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表,所述第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表都至少包括每個成員的標識和二進制數(shù)據(jù)長度;對第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表進行分析,得到兩者之間的轉(zhuǎn)換矩陣;根據(jù)所述轉(zhuǎn)換矩陣,將按照第一版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù),轉(zhuǎn)換為按照第二版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù)。本發(fā)明實施例提供了一種數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng),能夠使不同版本數(shù)據(jù)兼容。一種數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng),所述系統(tǒng)包括結(jié)構(gòu)體描述表生成模塊,用于根據(jù)不同版本的二進制數(shù)據(jù)結(jié)構(gòu)體定義第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表;分析轉(zhuǎn)換模塊,用于對第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表進行分析,得到兩者之間的轉(zhuǎn)換矩陣;還用于輸入第一版本結(jié)構(gòu)體二進制數(shù)據(jù)后得到第二版本結(jié)構(gòu)體二進制數(shù)據(jù);第一版本結(jié)構(gòu)體二進制數(shù)據(jù)存儲模塊,用于存儲第一版本結(jié)構(gòu)體二進制數(shù)據(jù)。從上述方案可以看出,本發(fā)明實施例分別將兩個版本的結(jié)構(gòu)體定義結(jié)構(gòu)體描述表,并對這兩個版本的結(jié)構(gòu)體描述表進行分析處理得到轉(zhuǎn)換矩陣,根據(jù)轉(zhuǎn)換矩陣,將按照一種版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù),轉(zhuǎn)換為按照另一種版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù)。從而實現(xiàn)了不同版本通信數(shù)據(jù)和配置數(shù)據(jù)的兼容。
圖I為本發(fā)明提供的不同版本二進制數(shù)據(jù)兼容的方法流程示意圖。圖2為本發(fā)明具體實施例中應用于上述方法的數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明作進一步詳細說明。圖I為本發(fā)明提供的不同版本二進制數(shù)據(jù)兼容的方法流程示意圖。如圖I所示,該方法包括步驟11、根據(jù)不同版本的二進制數(shù)據(jù)結(jié)構(gòu)體定義第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表,所述第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表都至少包括每個成員的名稱和二進制數(shù)據(jù)長度;步驟12、對第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表進行分析,得到兩者之間的轉(zhuǎn)換矩陣;步驟13、根據(jù)所述轉(zhuǎn)換矩陣,將按照第一版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù),轉(zhuǎn)換為按照第二版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù)。下面以一個實際例子進行說明。隧道接口的典型數(shù)據(jù)在版本I. 01中的結(jié)構(gòu)體如表I所示
權(quán)利要求
1.一種不同版本二進制數(shù)據(jù)兼容的方法,該方法包括 根據(jù)不同版本的二進制數(shù)據(jù)結(jié)構(gòu)體定義第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表,所述第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表都至少包括每個成員的標識和二進制數(shù)據(jù)長度; 對第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表進行分析,得到兩者之間的轉(zhuǎn)換矩陣; 根據(jù)所述轉(zhuǎn)換矩陣,將按照第一版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù),轉(zhuǎn)換為按照第二版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù)。
2.如權(quán)利要求I所述的方法,其特征在于, 所述對第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表進行分析,得到兩者之間的轉(zhuǎn)換矩陣的方法包括 根據(jù)第二版本結(jié)構(gòu)體描述表中成員的個數(shù)確定轉(zhuǎn)換矩陣的行數(shù),行元素包括該行對應的成員在第一版本結(jié)構(gòu)體中的偏移位置、在第二版本結(jié)構(gòu)體中的偏移位置和需要復制的該成員的二進制數(shù)據(jù)長度。
3.如權(quán)利要求2所述的方法,其特征在于,對于其中一個成員對應的行元素,將第二版本結(jié)構(gòu)體描述表中該成員之前的成員的二進制數(shù)據(jù)長度累加,作為該成員在第二版本結(jié)構(gòu)體中的偏移位置。
4.如權(quán)利要求3所述的方法,其特征在于,確定該成員是否存在于第一版本結(jié)構(gòu)體描述表中,如果是,則將第一版本結(jié)構(gòu)體描述表中該成員之前的所有成員的二進制數(shù)據(jù)長度累加,作為該成員在第一版本結(jié)構(gòu)體中的偏移位置;如果否,該成員在第一版本結(jié)構(gòu)體描述表中的二進制數(shù)據(jù)長度為零,在第一版本結(jié)構(gòu)體中的偏移位置為零。
5.如權(quán)利要求4所述的方法,其特征在于,比較該成員在第一版本結(jié)構(gòu)體描述表中的長度和在第二版本結(jié)構(gòu)體描述表中的長度,取兩者中較小值作為需要復制的該成員的二進制數(shù)據(jù)長度。
6.如權(quán)利要求I所述的方法,其特征在于,所述第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表還包括每個成員的數(shù)據(jù)類型。
7.一種數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng),其特征在于,所述系統(tǒng)包括 結(jié)構(gòu)體描述表生成模塊,用于根據(jù)不同版本的二進制數(shù)據(jù)結(jié)構(gòu)體定義第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表; 分析轉(zhuǎn)換模塊,用于對第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表進行分析,得到兩者之間的轉(zhuǎn)換矩陣;還用于輸入第一版本結(jié)構(gòu)體二進制數(shù)據(jù)后得到第二版本結(jié)構(gòu)體二進制數(shù)據(jù); 第一版本結(jié)構(gòu)體二進制數(shù)據(jù)存儲模塊,用于存儲第一版本結(jié)構(gòu)體二進制數(shù)據(jù)。
8.如權(quán)利要求7所述的數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng),其特征在于,所述轉(zhuǎn)換矩陣的行數(shù)根據(jù)第二版本結(jié)構(gòu)體描述表中成員的個數(shù)確定,行元素包括該行對應的成員在第一版本結(jié)構(gòu)體中的偏移位置、在第二版本結(jié)構(gòu)體中的偏移位置和需要復制的該成員的二進制數(shù)據(jù)長度。
全文摘要
本申請公開了一種不同版本二進制數(shù)據(jù)兼容的方法,該方法包括根據(jù)不同版本的二進制數(shù)據(jù)結(jié)構(gòu)體定義第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表,所述第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表都至少包括每個成員的標識和二進制數(shù)據(jù)長度;對第一版本結(jié)構(gòu)體描述表和第二版本結(jié)構(gòu)體描述表進行分析,得到兩者之間的轉(zhuǎn)換矩陣;根據(jù)所述轉(zhuǎn)換矩陣,將按照第一版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù),轉(zhuǎn)換為按照第二版本結(jié)構(gòu)體存儲的二進制數(shù)據(jù)。本申請還公開了一種數(shù)據(jù)版本轉(zhuǎn)換系統(tǒng)。采用本發(fā)明能夠使不同版本數(shù)據(jù)兼容。
文檔編號G06F17/30GK102902707SQ20121027016
公開日2013年1月30日 申請日期2012年8月1日 優(yōu)先權(quán)日2012年8月1日
發(fā)明者宋海賓 申請人:杭州華三通信技術(shù)有限公司