DBF文件数据结构实例分析
下面以一个具体实例来分析DBF数据结构:
该表格数据为:
列1
|
列2
|
1
|
2
|
2
|
4
|
3
|
6
|
4
|
8
|
5
|
10
|
6
|
12
|
7
|
14
|
8
|
16
|
9
|
18
|
10
|
20
|
用UltraEdit打开该dbf文件,其内容如下:
现在先分解一下,找出文件头,并分析一下文件头的内容。首先看第一个字节,值为03,这个是16进制的数据,第一个字节表示数据库类型,值03即0x03,对应FoxBASE+/Dbase
III plus,。然后看第4个字节到第7个字节,这一段表示文件中的记录条数,即表格的行数,其Byte值为0A 00 00 00,转换成Int32即为10,即表格的行数为10。关于Byte数组转换成数值类型,其代码如下:
/// <summary>
/// 将字节组转换成为整型
/// </summary>
/// <param name="tempBytes">字节数组</param>
/// <returns></returns>
public static Int32 ConvertBytesToInt32(byte[] tempBytes)
{
Int32 result = System.BitConverter.ToInt32(tempBytes, 0);
return result;
}
接着看第8个和第9字节,其值为61 00,转换成Int16其值即为97,意思就是说文件头所占字节长度为97,所以文件头的范围就是下面红色框内:
蓝色框为左边红色框对应的值,这个仅供参考。下面来仔细分析红色框中的数据:
前面的第1个字节到第8个和第9个字节我们前面都已经分析过了。第10和11个字节对应值表示一行数据的长度,其值为13 00,转换为Int其值为19,即每行数据占19个字节的长度,这个值应该等于接下来定义字段长度之和+1(每行最前面还有一个16进制值为20的字节)。
接下来的从第12个到31个都为保留字节,可以不管。因为前面已知文件头的长,为97,而用于文件头定义就占了32个,文件头最后一个字节用于表示字段定义结束,也占了一个,于是就只剩下97-32-1=64,而每定义一个字段占32个字节,所以就只有2个字段。第一个字段就是从第33个字节开始到第33+32个字节,如下面黄色框中:
下面参考第三个表来分析这段数据,已知从第0开始到10这11个字节表示的字段的名称,将这11个字节数组转换成字符串即为字段名称。将字节数组转换成字符串代码如下:
/// <summary>
/// 将字节组转换成为字符串
/// </summary>
/// <param name="tempBytes">字节数组</param>
/// <returns></returns>
public static string ConvertBytesToString(byte[] tempBytes)
{
string result = System.Text.Encoding.GetEncoding("gb2312").GetString(tempBytes);
return result;
}
将第0到第10个字节值转换成字符串,其值为“列1”,即第一个字段的名称。
第11个字节为字段数据类型,该值为4E(上图中用绿色标出),转换为char即为N,N表示数值类型,即第一列的数据类型为数值类型。
第12个到第15个为保留字节,暂不管。第16个字节表示字段的长度,其值为09(上图中用绿色标出),转换为Int其值即为9,即表示该字段长度为9个字节。后面从第17到31个字节都可暂不管。这样就分析完了一个字段的定义,安装同样的思路分析第二个字段,可以得到第二字段名称为“列2”,字段类型也为数值类型(N),字段长度也为9个字节。如下图所示,注意绿色框中的数据:
在第二个字段定义完成后,接下来的一个字节值为0D,即表示结束了字段定义,刚好在此也是97个字节。从第98个字节开始就是表格的数据对象了,每行占19个字节,其中第一个字节值为20,不属于表格单元的值,即从第99个字节开始,前面9个字节对应的值为第一行第一列单元的值,接着的9个字节是第一行第二列单元的值,在接下来的一个字节为默认字节,接着的9个字节就是第2行第一列单元的值,接下来的9个字节就是第2行第2列单元的值,依次类推,直到结束位置。
分享到:
相关推荐
网络中断时点开DNF掉线数据清理1.3版.bat清理一下!会好点!!!
DNF 清理游戏更新残留文件,和更新安装之后的一些无用文件。一键清理。。。。。。。。。
DNF配置文件 - /etc/dnf/dnf.conf;配置DNF - 修改配置参数;创建本地软件源仓库;添加软件源;启用和禁用软件源;管理软件包;列出软件包清单;显示RPM包信息;下载、安装和删除RPM包;管理软件包组;显示软件包组信息;安装和...
DNF装备管理系统,新手推荐,完整的项目,注释齐全,包含数据库与java连接教程,大量的数据和图片素材,项目展示链接:https://blog.csdn.net/weixin_43700968/article/details/89299230
DNF 过DNF保护 VC编程 VC编程过DNF保护
易语言DNF配置文件注入DLL例子,最新稳定注入方式。可以替代输入法注入。
DNF
DNF隐藏器(dnf窗口化快捷键)V2012 经典版.zip 不想用什么助手之类的,可以用这个简单的。
DNF数据清理1.4.rarDNF数据清理1.4.rarDNF数据清理1.4.rarDNF数据清理1.4.rarDNF数据清理1.4.rarDNF数据清理1.4.rar
DNF (Dandified Yum) 是基于 YUM 和 libsolv 的 Python 包管理工具。DNF 使用 RPM, libsolv 和 hawkey 进行 包管理;使用 librepo 进行元数据处理和包下载;使用 libcomps 处理 comps 数据。 使用:sudo cat '...
清除垃圾滴一个文件
一个简单的dnf横版游戏的实现,有兴趣的童鞋可以参考哦。 一个简单的dnf横版游戏的实现,有兴趣的童鞋可以参考哦。 一个简单的dnf横版游戏的实现,有兴趣的童鞋可以参考哦。 一个简单的dnf横版游戏的实现,有兴趣...
DNF驱动图标过TP下段找检测,找功能。
DNF上不去的时候使用的工具,用一下即可,方便实用,可以清理垃圾清理缓存
dellb1265dnf驱动是专为黑白激光多功能一体机B1265dnf打造的打印机驱动程序,打印机要想正常的与电脑连接,进行打印、复印和扫描等工作,就需要安装此驱动程序,欢迎有需要的朋友下载使用!官方介绍戴尔B1265dnf,...
有朋友玩DNF的时候提示TenSLX.dll出错或者缺损的,可以下载,解压后覆盖到游戏目录\start\TenProtect下就可以进游戏了
处理DNF缓存垃圾的 只适合win7 将内容的DNF目录改成自己的游戏目录即可。win10中文目录会乱码
鼠标指到物品就显示该物品的代码
高彷DNF登陆易语言源码丶
散发性Alzheimer 病患者与BDNF 基因单体型关联分析,钱云,张志珺,目的 在中国汉族散发性阿尔茨海默病(AD)患者中,分析脑源性神 经营养因子(BDNF)基因rs6265(G-196A)、rs11757、C-270T 和G-712A 4 个 单�