读DBF文件结构在VB.Net为二进制文件(Reading DBF File Structure i

2019-09-29 12:52发布

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

字节0为DBF文件类型。
字节1-3是最后更新(年年月月)。
一个DBF文件的字节4-7是在文件中的记录数。
字节8-9是第一数据记录的位置。
字节10-11是一个数据记录的长度,包括删除标志。
(本信息来自http://www.dbf2002.com/dbf-file-format.html )

以下是第一个32个字节我的DBF文件,用连字符分隔的:

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)指可视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?

我曾尝试十二月十六进制,反之亦然。

Answer 1:

我想你的2207是不正确的,但786是正确的。

相信值是基于低/高字节位置是由256因为它也被注释文件内处理的功率表示,但4个字节值得...

18 * 256^0 ( to the power 0 )  = 18 * 1  = 18
 3 * 256^1 ( to the power 1 )  = 3 * 256 = 768

18 + 768 = 786

现在,同样的对于其他...

168 * 256^0 ( to the power 0 )  = 168 * 1  = 168
  9 * 256^1 ( to the power 1 )  = 9 * 256 = 2304

168 + 2304 = 2472


文章来源: Reading DBF File Structure in VB.Net as binary file
标签: foxpro dbf