将VB.Net中的DBF文件结构读取为二进制文件

时间:2013-04-04 01:20:13

标签: foxpro dbf

我在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”(Hex 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吗?

我尝试过十六进制,反之亦然。

1 个答案:

答案 0 :(得分:4)

我认为你的2207不正确,但是786 IS正确。

我相信这些值是基于低/高字节位置,由​​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
相关问题