一种生成用于读写二进制文件代码的方法
【技术领域】
[0001] 本发明涉及软件开发领域,具体而言,涉及一种生成读写文件二进制代码的方法。
【背景技术】
[0002] 在某些行业的软件开发中,需要读写各种格式的二进制数据文件,目前大多采用 程序员编写读写的代码。即需要根据文件的格式,定义相应的数据结构,编写相应的读写的 代码;为了查看与验证输入/输出文件的格式的正确性,通常还需要编写将二进制文件转 换为文本形式的Dump工具,以及格式检查工具。工作繁琐且易出错。
【发明内容】
[0003] 为了解决上述存在的技术问题,本发明提供一种生成用于读写二进制文件代码的 方法,用以提高软件开发的效率。
[0004] 本发明的目的是通过下述技术方案实现的:一种生成用于读写二进制文件代码的 方法,其特征在于,步骤如下:首先,使用GUI工具定义二进制文件格式,所定义的文件格式 保存为格式描述文件ZFS (ZFormat Standard);然后,编译该格式描述文件,生成读写该格 式的文件的代码;生成检查该格式的文件的工具;生成Dump该格式的文件的工具;生成一 套专用于嵌入式系统的函数库代码;
[0005] 所述的格式描述文件ZFS整体的属性包括记录格式的名称、标题、字节序、是否以 Bit流存储、代表文件整体的复合类型、Schema文件的相对路径;
[0006] 所述的格式描述文件ZFS的文件格式包含一个或多个复合类型的定义及其回写 信息;每个复合类型中可以包含一个或多个变量;变量的类型可以是基本类型或复合类 型;
[0007] 所述的格式描述文件ZFS中可指定字节序,即文件中保存的数值的字节序与内存 中相同或不同;
[0008] 所述的格式描述文件ZFS可以嵌套包含,被包含的ZFS中的复合类型可以在包含 它的ZFS文件中使用。
[0009] 所述的变量的类型可以是基本类型或复合类型;其中基本类型至少包括1字节~ 8字节的整数、单字节与宽字节字符串、2~8字节浮点数、任意Bit的数字,且根据需要可 对代码生成工具进行扩展;
[0010] 变量是否保存在文件中,可在格式描述文件ZFS中通过表达式动态指定;该表达 式可以被生成相应的代码;
[0011] 所述的复合类型变量由多个变量组合而成,复合类型变量可定义传入的参数;参 数的类型可以是基本类型,也可以是复合类型;
[0012] 所述的复合类型变量可被定义为联合体,在输出至二进制文件时复合类型中的多 个变量占用同一存储空间且只有一个为有效;
[0013] 所述的复合类型可定义回写信息,所述的回写信息包括记录的数量、在文件中的 偏移、保存的Size。
[0014] 所述的变量是一个数组,数组长度可以通过表达式动态指定。
[0015] 所述的变量之间存在对齐标识,使变量的起始位置按照整数字节数对齐存储。
[0016] 所述的变量与变量之间存在忽略区间,使变量之间加入空白区域。
[0017] 除复合类型中的变量外,还可定义临时变量用于读写过程中的计算。
[0018] 将所述的格式描述文件ZFS保存为基于XML的扩展格式。
[0019] 本发明的有益效果:本发明采用上述方案,生成的用于写文件的代码能够自动完 成一些记录数量、偏移量、Size等的计算与回写,极大的简化了开发。同时生成的格式检查 工具与Dump工具等,便于验证为写出文件的正确性。本发明所定义的文件格式描述的标 准,可用于定义任意二进制文件格式;采用XML扩展形式,便于维护和理解;同时提供的GUI 编辑器,便于文件格式定义。
【附图说明】
[0020] 图1是本发明方法文件转换流程图。
[0021] 图2是本发明方案依据的二进制树形结构原理图。
[0022] 图3是本发明变量记录格式的范例图。
【具体实施方式】
[0023] 本发明提供了一种生成用于读写二进制格式文件的代码的方法,该方法基于一个 文件格式编辑模块及代码生成模块,如图1所示,其中文字格式编辑模块:采用GUI编辑器, 用户可任意定义需要读写的二进制文件的格式,所定义的格式保存为格式描述文件ZFS(Z Format Standard)。代码生成模块:根据用户定义的文件格式,自动生成用于读写该格式的 文件的代码。
[0024] 本发明方案的理论依据:通常我们认为一个二进制文件的格式是一个树形的结 构,图2所示,其中C中存在一个变量"0ffset_of_F",为指向"F"开始处的地址,则我们认 为C与F存在"关系"〈relationship〉。本发明中生成的代码,可以自动计算这种关系并回 写,从而简化开发。
[0025] 本发明提供的一种生成用于读写二进制文件代码的方法,步骤如下:首先,使 用GUI工具定义二进制文件格式,所定义的文件格式保存为格式描述文件ZFS (Z Format Standard)或者直接按照ZFS (Z Format Standard)标准编写格式描述文件;然后,编译该 格式描述文件,生成读写该格式的文件的代码;生成检查该格式的文件的工具;生成Dump 该格式的文件的工具;生成一套专用于嵌入式系统的函数库代码;
[0026] 其中格式描述文件ZFS整体的属性包括记录格式的名称、标题、字节序 (BigEndian/LittleEndian)、是否以Bit流存储、代表文件整体的复合类型、Schema文件的 相对路径;
[0027] 格式描述文件ZFS的文件格式包含一个或多个复合类型的定义及其回写信息;每 个复合类型中可以包含一个或多个变量;变量的类型可以是基本类型或复合类型;
[0028] 格式描述文件ZFS中还可指定字节序,即文件中保存的数值的字节序与内存中相 同或不同;
[0029] 格式描述文件ZFS可以嵌套包含,被包含的ZFS中的复合类型可以在包含它的ZFS 文件中使用。
[0030] 其中变量的类型可以是基本类型或复合类型;其中基本类型至少包括1字节~8 字节的整数、单字节与宽字节字符串