首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以二进制文件的形式读取VB.Net中的DBF文件结构

以二进制文件的形式读取VB.Net中的DBF文件结构
EN

Stack Overflow用户
提问于 2013-04-04 09:20:13
回答 1查看 4.7K关注 0票数 1

我在VB.Net中以二进制文件的形式打开一个DBF,以确定其结构。我必须这样做,因为使用Visual Foxpro OLEDB驱动程序不会返回小数字段的精度和小数位数。我成功地完成了我的任务,没有任何问题。我遇到的问题是:

字节0是DBF文件类型。

字节1-3是上次更新(yymmdd)。

DBF文件的字节4-7是文件中的记录数。

字节8-9是第一条数据记录的位置。

字节10-11是一个数据记录的长度,包括删除标志。

(此信息来自http://www.dbf2002.com/dbf-file-format.html)

下面是我的DBF文件的前32个字节,用连字符分隔:

48-13-2-6-158-0-0-0-168-9-18-3-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1-3-0-0

"48“(十六进制30)表示Visual Foxpro

字节1-3表示文件最后一次更新是在2013年2月6日。

字节4-7表示文件有158条记录。

所有这些都是正确的。

字节8-9是168和9,字节10-11是18和3。

实际记录大小为786字节。因为有68个字段,所以第一条数据记录的位置应该是(68x32+31) = 2207。

是否需要进行一些转换才能将1689转换为2207,将183转换为786?

我已经尝试过从十进制到十六进制,反之亦然。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-04 09:44:42

我想你的2207是错的,但786是对的。

我相信这些值是基于低位/高位字节的位置,用256的幂表示,因为它也是在memo文件中处理的,但4个字节相当于…

代码语言:javascript
运行
复制
18 * 256^0 ( to the power 0 )  = 18 * 1  = 18
 3 * 256^1 ( to the power 1 )  = 3 * 256 = 768

18 + 768 = 786

现在,另一个也是一样的。

代码语言:javascript
运行
复制
168 * 256^0 ( to the power 0 )  = 168 * 1  = 168
  9 * 256^1 ( to the power 1 )  = 9 * 256 = 2304

168 + 2304 = 2472
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15800991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档