一種生成用于讀寫二進(jìn)制文件代碼的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件開發(fā)領(lǐng)域,具體而言,涉及一種生成讀寫文件二進(jìn)制代碼的方法。
【背景技術(shù)】
[0002] 在某些行業(yè)的軟件開發(fā)中,需要讀寫各種格式的二進(jìn)制數(shù)據(jù)文件,目前大多采用 程序員編寫讀寫的代碼。即需要根據(jù)文件的格式,定義相應(yīng)的數(shù)據(jù)結(jié)構(gòu),編寫相應(yīng)的讀寫的 代碼;為了查看與驗(yàn)證輸入/輸出文件的格式的正確性,通常還需要編寫將二進(jìn)制文件轉(zhuǎn) 換為文本形式的Dump工具,以及格式檢查工具。工作繁瑣且易出錯(cuò)。
【發(fā)明內(nèi)容】
[0003] 為了解決上述存在的技術(shù)問題,本發(fā)明提供一種生成用于讀寫二進(jìn)制文件代碼的 方法,用以提高軟件開發(fā)的效率。
[0004] 本發(fā)明的目的是通過下述技術(shù)方案實(shí)現(xiàn)的:一種生成用于讀寫二進(jìn)制文件代碼的 方法,其特征在于,步驟如下:首先,使用GUI工具定義二進(jìn)制文件格式,所定義的文件格式 保存為格式描述文件ZFS (ZFormat Standard);然后,編譯該格式描述文件,生成讀寫該格 式的文件的代碼;生成檢查該格式的文件的工具;生成Dump該格式的文件的工具;生成一 套專用于嵌入式系統(tǒng)的函數(shù)庫(kù)代碼;
[0005] 所述的格式描述文件ZFS整體的屬性包括記錄格式的名稱、標(biāo)題、字節(jié)序、是否以 Bit流存儲(chǔ)、代表文件整體的復(fù)合類型、Schema文件的相對(duì)路徑;
[0006] 所述的格式描述文件ZFS的文件格式包含一個(gè)或多個(gè)復(fù)合類型的定義及其回寫 信息;每個(gè)復(fù)合類型中可以包含一個(gè)或多個(gè)變量;變量的類型可以是基本類型或復(fù)合類 型;
[0007] 所述的格式描述文件ZFS中可指定字節(jié)序,即文件中保存的數(shù)值的字節(jié)序與內(nèi)存 中相同或不同;
[0008] 所述的格式描述文件ZFS可以嵌套包含,被包含的ZFS中的復(fù)合類型可以在包含 它的ZFS文件中使用。
[0009] 所述的變量的類型可以是基本類型或復(fù)合類型;其中基本類型至少包括1字節(jié)~ 8字節(jié)的整數(shù)、單字節(jié)與寬字節(jié)字符串、2~8字節(jié)浮點(diǎn)數(shù)、任意Bit的數(shù)字,且根據(jù)需要可 對(duì)代碼生成工具進(jìn)行擴(kuò)展;
[0010] 變量是否保存在文件中,可在格式描述文件ZFS中通過表達(dá)式動(dòng)態(tài)指定;該表達(dá) 式可以被生成相應(yīng)的代碼;
[0011] 所述的復(fù)合類型變量由多個(gè)變量組合而成,復(fù)合類型變量可定義傳入的參數(shù);參 數(shù)的類型可以是基本類型,也可以是復(fù)合類型;
[0012] 所述的復(fù)合類型變量可被定義為聯(lián)合體,在輸出至二進(jìn)制文件時(shí)復(fù)合類型中的多 個(gè)變量占用同一存儲(chǔ)空間且只有一個(gè)為有效;
[0013] 所述的復(fù)合類型可定義回寫信息,所述的回寫信息包括記錄的數(shù)量、在文件中的 偏移、保存的Size。
[0014] 所述的變量是一個(gè)數(shù)組,數(shù)組長(zhǎng)度可以通過表達(dá)式動(dòng)態(tài)指定。
[0015] 所述的變量之間存在對(duì)齊標(biāo)識(shí),使變量的起始位置按照整數(shù)字節(jié)數(shù)對(duì)齊存儲(chǔ)。
[0016] 所述的變量與變量之間存在忽略區(qū)間,使變量之間加入空白區(qū)域。
[0017] 除復(fù)合類型中的變量外,還可定義臨時(shí)變量用于讀寫過程中的計(jì)算。
[0018] 將所述的格式描述文件ZFS保存為基于XML的擴(kuò)展格式。
[0019] 本發(fā)明的有益效果:本發(fā)明采用上述方案,生成的用于寫文件的代碼能夠自動(dòng)完 成一些記錄數(shù)量、偏移量、Size等的計(jì)算與回寫,極大的簡(jiǎn)化了開發(fā)。同時(shí)生成的格式檢查 工具與Dump工具等,便于驗(yàn)證為寫出文件的正確性。本發(fā)明所定義的文件格式描述的標(biāo) 準(zhǔn),可用于定義任意二進(jìn)制文件格式;采用XML擴(kuò)展形式,便于維護(hù)和理解;同時(shí)提供的GUI 編輯器,便于文件格式定義。
【附圖說明】
[0020] 圖1是本發(fā)明方法文件轉(zhuǎn)換流程圖。
[0021] 圖2是本發(fā)明方案依據(jù)的二進(jìn)制樹形結(jié)構(gòu)原理圖。
[0022] 圖3是本發(fā)明變量記錄格式的范例圖。
【具體實(shí)施方式】
[0023] 本發(fā)明提供了一種生成用于讀寫二進(jìn)制格式文件的代碼的方法,該方法基于一個(gè) 文件格式編輯模塊及代碼生成模塊,如圖1所示,其中文字格式編輯模塊:采用GUI編輯器, 用戶可任意定義需要讀寫的二進(jìn)制文件的格式,所定義的格式保存為格式描述文件ZFS(Z Format Standard)。代碼生成模塊:根據(jù)用戶定義的文件格式,自動(dòng)生成用于讀寫該格式的 文件的代碼。
[0024] 本發(fā)明方案的理論依據(jù):通常我們認(rèn)為一個(gè)二進(jìn)制文件的格式是一個(gè)樹形的結(jié) 構(gòu),圖2所示,其中C中存在一個(gè)變量"0ffset_of_F",為指向"F"開始處的地址,則我們認(rèn) 為C與F存在"關(guān)系"〈relationship〉。本發(fā)明中生成的代碼,可以自動(dòng)計(jì)算這種關(guān)系并回 寫,從而簡(jiǎn)化開發(fā)。
[0025] 本發(fā)明提供的一種生成用于讀寫二進(jìn)制文件代碼的方法,步驟如下:首先,使 用GUI工具定義二進(jìn)制文件格式,所定義的文件格式保存為格式描述文件ZFS (Z Format Standard)或者直接按照ZFS (Z Format Standard)標(biāo)準(zhǔn)編寫格式描述文件;然后,編譯該 格式描述文件,生成讀寫該格式的文件的代碼;生成檢查該格式的文件的工具;生成Dump 該格式的文件的工具;生成一套專用于嵌入式系統(tǒng)的函數(shù)庫(kù)代碼;
[0026] 其中格式描述文件ZFS整體的屬性包括記錄格式的名稱、標(biāo)題、字節(jié)序 (BigEndian/LittleEndian)、是否以Bit流存儲(chǔ)、代表文件整體的復(fù)合類型、Schema文件的 相對(duì)路徑;
[0027] 格式描述文件ZFS的文件格式包含一個(gè)或多個(gè)復(fù)合類型的定義及其回寫信息;每 個(gè)復(fù)合類型中可以包含一個(gè)或多個(gè)變量;變量的類型可以是基本類型或復(fù)合類型;
[0028] 格式描述文件ZFS中還可指定字節(jié)序,即文件中保存的數(shù)值的字節(jié)序與內(nèi)存中相 同或不同;
[0029] 格式描述文件ZFS可以嵌套包含,被包含的ZFS中的復(fù)合類型可以在包含它的ZFS 文件中使用。
[0030] 其中變量的類型可以是基本類型或復(fù)合類型;其中基本類型至少包括1字節(jié)~8 字節(jié)的整數(shù)、單字節(jié)與寬字節(jié)字符串