数据文件结构分析——第二部分

2 Fexplorer简介

2.1 Fexplorer功能

2.1.1字节流解释功能

将字节流解释成基本数据类型。Fexplorer支持单字节整数、双字节整数、十进制四字节长整数、十六进制四字节长整数、字符串、四字节单精度实数、六字节实数、八字节双精度实数、日期时间、颜色(RGBCMYKLongInt10种基本数据类型。Fexplorer能自动将当前字节流解释成上述10种基本数据类型,分析员可以根据各种解释结果,选定一种合适的数据类型。

2.1.2自定义数据结构功能

Fexplore支持自定义结构数据功能。自定义结构数据由用户利用基本数据类型组织而成。应用自定义结构数据,可以对数据块进行整块翻译,加速数据文件分析的速度。通过自定义结构数据进行数据结构分析是Fexplore软件功能强大的原因所在。

2.1.3结构数据分析功能

在基本数据类型定义和结构数据定义的基础上,通过统计数据出现的频率和位置,帮助分析员破解构成结构数据类型中的某数据项的含义,如确定数据是否代表图层编号、颜色编号等。

2.1.4空间数据分析功能

针对特殊的空间数据,利用GIS功能,展示分析的结果。

2.1.5数据读写程序自动生成功能

自动生成读写数据文件的程序代码(Delphi格式)。

2.1.6智能解释功能(尚未实现)

基本数据类型智能解释、基于字节流周期分析的自动分块功能。

2.2 软件组成与结构

输入/输出模块、数据翻译模块、界面管理模块、数据结构分析模块、数据查找/自动翻译模块、空间数据分析模块。

2.2.1 文件输入/输出模块

包括三类文件:数据文件、记录文件和结构文件。输入模块负责将数据文件、记录文件和结构文件读入内存。其中记录文件记录分析员破解的数据,结构文件包含分析员自定义的结构数据。输出模块负责将分析结果,即记录文件和结构文件保存为磁盘文件。

数据文件

记录文件

结构文件

文件输入

文件输出


2.2.2 数据翻译模块

数据翻译模块包括基本数据类型翻译和结构数据类型自动翻译。基本数据类型翻译模块负责将字节流翻译成基本数据类型。

结构数据类型自动翻译

字节流

单字节

双字节

...

8字节实数


模块在数据查询模块中介绍。

2.2.3 主界面管理模块

主界面管理模块包括数据流显示窗口管理、基本数据类型面板管理、数据类型显示窗口管理、翻译记录窗口管理、结构窗口管理、书签窗口管理6个模块组成。主界面管理模块负责各模块的显示及模块间的联动操作。

1)显示界面管理

数据流显示窗口管理模块负责将读入内存Buffer中的数据流,以字节方式显示。同时显示字节的地址及对应的ASCII码。

基本数据类型面板管理模块负责显示当前字节流在作为基本数据类型时转换结果。

数据类型显示窗口管理根据基本数据类型转换数值,参考已往翻译经验,计算当前数据作为各基本数据类型的概率,分析员据此选择合适的数据类型。

翻译记录窗口管理模块负责显示分析员完成的分析数据的类型、地址、大小、内容等。

结构窗口管理模块显示分析员定义的结构数据,包括结构数据名称、数据项类型、数据项大小等。

书签窗口管理模块负责显示分析员定义的记录数据或结构数据的书签。

2)模块联动管理

除了上述显示功能外,主管理模块还负责上述各模块间的联系和联动,主要包括以数据流显示窗口为主的联动、以翻译记录窗口为主的联动、以书签窗口为主的联动。

窗口联动的实质是各窗口当前位置对应的数据地址保持相同。

2.2.4 结构数据分析模块

结构数据分析模块包括结构数据索引表、结构数据显示、结构数据项统计、结构数据项实例地址列表子模块。


结构数据索引子模块负责在窗口列出分析员所定义的结构数据名称。结构数据子模块负责在窗口显示应当前结构数据的所有数据项的类型、长度、最小及最大取值。结构数据项统计子模块负责统计当前整型数据项所有取值在文件中出现的频次。结构数据项实例地址列表子模块负责在窗口显示当前数据项当前取值各个实例的地址。

2.2.5 数据查找/自动翻译模块

数据查找/自动翻译模块包括数据查找、空间查找和结构数据自动翻译三个子模块。数据查找子模块实现字符串查找和整型数据查找。空间查找根据目标位置和查找精度范围,搜索落在查找精度范围的所有空间目标,包括空间点目标和线目标。

结构数据自动翻译子模块根据分析员选定的结构数据、开始地址和(或)结束地址,进行自动翻译。

2.2.6 空间数据分析模块

对于空间数据文件,将解释的空间信息显示出来。包括读入空间数据和显示空间数据两个子模块。

读入空间数据子模块负责从翻译的记录数据从将空间数据取出来,组成可被GIS系统处理的空间数据结构。

显示空间数据子模块负责将组织好的空间数据结构在窗口中显示出来。显示空间数据子模块提供分析员对显示窗口进行有限操作,如漫游、放大、缩小等。

2.3 地址与指针


为了处理大型数据文件,设计了通过临时文件和缓冲区(Buffer)处理数据文件的文件访问方式,在这里临时文件和缓冲区(Buffer)在访问地址上具有一对一的关系。数据文件、缓冲区、数据流窗口、记录窗口和数据记录之间的对应关系如下图所示。

 

建立各个窗口或数据流之间的关系依靠数据的地址(addr),并通过全局地址(Ftop+OPFPos)和缓冲区的局部地址(OPFPos),分别与数据流窗口(Rich)中的指针(Pos)、记录窗口(Grid)的指针(CurrRow)和数据记录指针(CurrRecord)通过一系列地址函数建立关系。

CartToOPFPosPos)建立了缓冲区局部地址(OPFPos)与数据流窗口的地址的对应关系。

SeekCurrRowByAddressFTop+OPFPosGridDataFalse)建立了全局地址(Ftop+OPFPos)与记录窗口(Grid)的指针(CurrRow)的关系。

GetCurrRecordByAddressaddrData)建立了全局地址(Addr)与数据记录指针(CurrRecord)的关系。

 

阅读更多
个人分类: 程序交友
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭