DBF文件数据结构实例分析

C与dBASE(Foxbase)和汇编语言接口-C语言直接读取数据库的.DBF文件 一般需要高级语言(C,PASCAL,BASIC等)与数据库语言混合编程,以增强数据库语言的能力。另外,在应用软件开发中,某些调用频率高,直接影响系统效率的模块,如果用高级语言实现,有时不仅难以实现,而且即使能够实现,效率也不令人满意,这就需要高级语言与汇编语言混合编程。printf("最后修改日期:%d年%d月%d日\n",year,month,date);printf("记录长:%d\n字段数:%d\n",reclen,fields); 阅读详情
 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列单元的值,依次类推,直到结束位置。

geopandas读取shp文件并作图 geopandas基本数据结构 geopandas沿用了pandas的数据类型,也就是具有GeoSeries,GeoDataFrame两种主要的数据结构,继承了pandas数据结构中大部分操作方法 GeoSeries对应Series,只有一列,里面的每个元素都是代表地理空间图形,有可能是点、线或者面 GeoDataFrame是包含GeoSeries的数据结构,它是多列的,但其中一列必然是GeoSeries列,这个GeoSeries列被称作GeoDataFrame中的几何列。 GeoDataFrame的其 阅读详情

相关推荐

【GlobalMapper精品教程】053:打开dbf文件并生成有坐标系的shp数据

本文讲解在globalmapper汇总打开dbf文件并生成有坐标系的shp数据。一、dbf文件解读二、打开dbf文件 GM软件对多种数据格式的支持太优秀,几乎我们用到的空间非空间数据都可迎刃而解,dbf也不例外。以shp为代表的大多数GIS矢量数据采用dbf存储属性信息,本文使用到的全国POI数据正好是dbf,下面讲解打开过程。 我们可以通过Excel或FME等多种软件查看dbf的结构,字段有:Name,kind,Lat,Lon,其中Lon为经度,Lat为纬度,我们后续一定是通过经纬度坐标来生成点。

智慧空间实验室 3272

shapefile与字符集编码设置

Summary 在 ArcGIS Desktop (ArcMap, ArcCatalog, and ArcToolbox) 中,有编码页转换功能(CODE PAGE CONVERSION),可以读写多种字符编码的 shapefile 和 dBASE 表。 在系统注册表中,编码页转换功能(CODE PAGE CONVERSION)命名为 'dbfDefault',可以修改这个值。

慕名ArcGIS 2万+

股票行情DBF文件处理与数据传输实战

本文还有配套的精品资源,点击获取 简介:DBF文件格式在数据存储与交换中的重要性,以及其在股票行情数据传输中的应用。介绍DBF文件结构和核心任务,包括使用代码读取DBF文件、数据处理、合并数据和数据传输。详细说明了错误处理与日志记录的重要性,并以 Send_Convert 脚本为例,解释了实现股票行情数据传输的具体步骤。 1. DBF文件格式及其在数...

weixin_42527665的博客 1693

DBF文件的格式

注:循环表示有多个重复的单元(如:行、列等),相对位置表示数据相对于这个单元的位置。dbf文件即dbase表,现在介绍它的结构:(假设有一个i行j列的表)32~ j循环:(j=(HL-33)/32)10~11 一条记录(一行)的长度。8~9 文件头的字节数(HL)16 字段长度(FL)}0~FL-1 内容}}4~7 行数 i。{字段:(相对位置)

weixin_57362681的博客 1137

全面管理DBF文件:查看与编辑工具指南

DBF文件中的记录字段定义了数据的结构。每个记录可以包含一个或多个字段,每个字段都有相应的类型和长度,例如字符型、数值型或日期型。字段的定义紧接着文件头之后,并且以连续的条目(称为字段描述符)呈现。在上面的表格中,展示了几个不同类型的字段及其类型标识符。每个字段开始于一个字段描述符,它定义了字段的名称和类型,以及可选的字段长度和小数位数。例如,N(10,2)表示一个数值型字段,宽度为10,小数位数为2。

weixin_31419153的博客 1708

DBF文件查看器与管理工具使用指南

DBF(Database File)文件格式是一种较为古老的数据库文件格式,由美国Ashton-Tate公司开发。自1980年代起,DBF文件格式广泛应用于多种软件平台中,特别是在Dbase和FoxPro等数据库管理系统的支持下,成为了当时主流的数据存储解决方案。DBF查看器工具为用户提供了丰富的功能来浏览、编辑、导入导出DBF文件。该工具支持DBF文件的打开、查看、编辑记录、批量更新、索引管理等操作。它的界面设计简洁直观,易于新用户上手,同时提供了高级功能选项供经验丰富的用户使用。

weixin_35390379的博客 1509

Python操作DBF文件

处理DBF文件可能需要一些额外的注意和技巧,但使用像dbfread和dbf这样的Python库可以大大简化这个过程。通过了解这些库的功能、限制和最佳实践,你可以更有效地处理DBF文件,并克服可能遇到的挑战。在处理大型文件或复杂任务时,请考虑使用性能优化和错误处理技术来确保你的代码能够高效、稳定地运行。

Python老吕的博客 3094

轻量级DBF数据库读取与管理工具实战应用

整个工具可划分为五大核心模块:文件访问层(File Access Layer)解析引擎(Parsing Engine)数据模型层(Data Model)业务逻辑控制器(Business Logic Controller)和用户界面(UI Layer)。各模块之间通过明确定义的接口通信,避免紧耦合。模块名称职责描述输入/输出文件访问层负责打开、读取、写入.dbf文件;支持内存映射或流式读取文件路径 → 字节流解析引擎。

weixin_35732273的博客 842

DBF文件实例分析(转)

 DBF文件数据结构实例分析 下面以一个具体实例来分析DBF数据结构: 该表格数据为: 用UltraEdit打开该dbf文件,其内容如下: 现在先分解一下,找出文件头,并分析一下文件头的内容。首先看第一个字节,值为03,这个是16进制的数据,第一个字节表示数据库类型,值03即0x03,对应FoxBASE+/Dbase III plus,。然后看第4个字节到第7个字节,这一段表示文件...

VioletBlossomed的博客 1007

直观的*.dbf到*.xls格式转换工具:dbf2xls.exe

在信息技术迅速发展的今天,企业与组织常常需要对不同格式的数据进行转换,以便于在不同的系统和应用程序间进行数据共享和处理。特别是对于那些依然在使用较老版本数据库管理系统的公司,将Visual FoxPro的dbf文件转换为Excel的xls文件的需求日益增加。Visual FoxPro是一个已停止支持的数据管理系统,而Excel广泛应用于财务、商业分析等多个领域,因此这种转换变得尤为重要。主程序架构是整个exe文件的灵魂。

weixin_34640289的博客 558

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5024

DBF文件的初步了解(一)

DBF文件格式是一种比较“古老”的数据库文件格式了。要不是最近项目中需要,笔者恐怕到今天也不曾听说过DBF文件格式。 作用:DBF数据库格式是DOS系统中的dBase数据库和FoxPro数据库所使用的数据库格式。如今,如果电脑上没有安装这两款软件,可以使用Excel打开。 数据结构 1. 数据文件.DBF结构分析  数据库文件由头记录(header record)和数据记录(data re

阳 1万+

2024年最新双摄像头的实时视频拼接及目标跟踪(一)_监控视频拼接实时(1),网络相关+C C++三方库的源码分析+数据结构与算法

opencv中采用了SURF,ORB进行特征点提取,如果装的是opencv2.0版本,则可以直接用SURF,如果是3.0版本,则需要下载相应的contrib库进行安装。原理不赘述,给出其实验结果对比和分析,原始图像1SURF特征点提取网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加戳这里获取一个人可以走的很快,但一群人才能走的更远!

m0_51437227的博客 937

excel文件修复工具_DBF Doctor下载_DBF文件修复软件官方版下载[管理工具]

DBF Doctor官方版是很好用的文件修复软件,DBF Doctor官方版能够让使用者控制恢复过程并手动处理数据,并针对快速恢复进行了优化。DBF Doctor最新版可以帮助用户轻松修复因为误操作而损坏的DBF文件,为数据库的文件安全提供了帮助,软件能够自动分析文件的标题和数据结构,准确的修复损坏片段。 软件功能 1、分析文件中的标头和数据结构。 ...

weixin_39839726的博客 367

从零开始跑通3DGS教程:(四)修改(缩放、空间变换)colmap生成的sfm结果

通过colmap进行的sfm的普通方式会丢失场景的物理尺度信息,并且并不在符合一般认知的坐标系下,本文将读取colmap生成的点云和相机pose,将其进行空间变换和缩放之后,重新保存,新保存的结果仍然可以被colmap读取以及进行后续的稠密重建以及3dgs等工作

诺有缸的高飞鸟的博客 1424

YOLOv8+BiFPN双向特征金字塔:多尺度目标检测精度提升28%的实战教程

双向特征金字塔网络(BiFPN)是一种强化多尺度特征融合支持“自顶向下+自底向上”的双向特征流动,同时保留不同尺度的细节信息;引入加权融合机制,自动学习不同特征的重要性权重;裁剪冗余节点,在轻量化的同时提升融合效率。

m0_64661770的博客 492

解析DBF文件

  上周,公司给了许多DBF后缀的数据文件让我进行解析。   因为是DBF文件我发现mysql,和Oracle都能直接对DBF文件进行导入。在导入过程中发现这些数据库并不能识别这些文件。   通过百度找到了打开这种文件的软件Visual FoxPro、Access,用它们打开后出现如下结果。   后来同事告诉我这是Oracle数据库里面的文件,我将它们和Oracle下的DBF进行...

weixin_30954265的博客 868

cesium单向流动线效果

在学材质的路上一去不复返了属实是,难也难在这。还请各位大佬多多指教~

就zhei? 689

别再为老系统发愁了!用DBF Viewer 2000轻松搞定Windows 11上的DBF文件编辑

本文介绍了如何使用DBF Viewer 2000在Windows 11上高效编辑DBF文件,解决新老系统兼容性问题。通过详细安装指南和实战案例,展示其无依赖运行、大文件支持和编码自适应等优势,助力企业轻松处理财务、库存等关键业务数据。

weixin_42620202的博客 303

深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天

文章目录前期工作设置GPU导入数据标准化可视化构建CNN网络编译训练模型预测模型评估 前期工作 设置GPU 如果使用的是CPU可以忽略这步 import tensorflow as tf gpus = tf.config.list_physical_devices("GPU") if gpus: gpu0 = gpus[0] #如果有多个GPU,仅使用第0个GPU tf.config.experimental.set_memory_growth(gpu0, True) #设置GPU显存用量

“365天深度学习训练营”报名进行中~ 7855

利用R批量计算相关系数

批量求相关系数

weixin_52073820的博客 1458

解析一个dbf文件

// jxdbf.cpp : 定义控制台应用程序的入口点。 // #include #include #include #include #define stru_name_beg 32 #define stru_type_idx stru_name_beg+11 #define stru_len_idx stru_name_beg+16 #define max 256 //以D:\

陈刚编程心得与知识集 2462

在PPT里如何做出晶莹剔透的高级水泡感出来呢

水晶汽泡被大量使用在TED场景的演讲片稿中,给人以强烈的视觉冲击感。其实实现很简单。本篇就用三步教会大家如何制作这样的一种PPT效果。

打造全国最全的AI Agent开发知识领域的博客 1537

Oracle数据恢复解决方案——通过DBF文件恢复数据

Oracle数据恢复解决方案——通过DBF文件恢复数据 【下载地址】Oracle数据恢复解决方案通过DBF文件恢复数据 Oracle数据恢复解决方案为您提供了一种高效且可靠的方法,通过DBF文件恢复误删或损坏的数据库数据。即使在没有备份文件的情况下,只要数据文件完好,您仍能完整恢复数据库。本方法操作简单,步骤清晰,帮助您...

gitblog_06784的博客 1135

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: DBF文件格式说明
下一篇: DBF文件读取与写入程序设计
大侠肖
博客等级 码龄19年 419粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值