2012-01-27 40 views
0

我从旧的数据库文件中得到这些数字,我正在寻找它使用的数字表示。这是什么样的二进制数字表示形式?

这些数字以二进制格式存储,它们被认为是64位浮点数,如54.123等等。

我只发布自然数,因为这是我需要的,该字段只包含没有分数的自然数。

这些都是一些数字,我有:

  • 00:00000000
  • 01:10000100111000000
  • 02:1000001001110000000
  • 03:1100001110101000000
  • 04:100000010011100000000
  • 05:101000011000011000000
  • 08:10000000111000100000
  • 09:100100001011111100000
  • 16:011100011000000
  • 24:10000000101010011100000
+1

那么其余的位在哪里,如果这些都是64位数?你压制前导零?如果是这样,为什么0给出了这么多位,为什么16位在其最左边的位置有0? – unwind 2012-01-27 11:21:09

+0

如果每个数字都使用64位存储,则可能有助于显示所有这些数字,以强调对齐。我看到8位,15位,23位等等。它们是可变长度吗? – Vlad 2012-01-27 11:23:04

+0

是的,它很有趣,我从文件中得到了它们。他们有一个最大值,但我想他们被存储为可变长度。如果这有助于它从旧的Visual Foxpro文件 – Opi 2012-01-27 11:24:49

回答

1

显然,有阅读dBFS的PHP类:http://www.phpclasses.org/package/1302-PHP-Extract-information-from-a-DBF-database-file.html 。他们说它不需要任何扩展,它都是用PHP函数完成的。

或者,您可以用各种查看器检查DBF以确定该字段的格式。

根据this,有几种字段类型用于存储数字。 This讨论字段类型及其表示方式。

无论如何,据我所知,数字字段可能被默认存储为ASCII,我认为是固定长度而不是浮点数。所以你可以通过使用floatval来逃脱。

相关问题