gpt4 book ai didi

delphi - Delphi 7中TDateTime的内部格式?

转载 作者:行者123 更新时间:2023-12-03 18:27:49 26 4
gpt4 key购买 nike

我已经花了很多时间研究这个并且很困惑:我的问题是 - 有 内部 Delphi TDateTime 的格式在 Delphi 7(2002 年左右发布)和今天之间发生了变化?

场景:我正在读取一个由 Delphi 7 应用程序创建的二进制日志文件,供应商告诉我它是记录中的 TDateTime,但解码这些位表明它显然不是标准的 IEEE 754 浮点,即使现代 Delphi 生成的 TDateTime 是.

但它是 某种具有大约 15 位指数和 45 位有效数的浮点数(与 IEE754 中的 11 位和 53 位相反),对于显然不是负数的数字,前导位是 1(在 IEE754 中表示负数),例如当前日期/时间。

旧文档中的提示表明 TDateTime “读取为” double ,但不一定在内部表示为一,这意味着内部格式几乎不可见,除非这些 TDateTime 以二进制形式写出。

我怀疑是 Delphi 8 发生了变化,它添加了 .NET 支持,但我根本无法在任何地方找到对此的任何引用。我有 perl 代码 (!) 可以区分这些主要工作的类型,但我很想找到一个正式的规范,这样我就可以正确地做到这一点。

有没有遇到过这种情况的老手?

~~~ 史蒂夫

最佳答案

自 Delphi 7 以来没有任何变化。在 Delphi 7 中,实际上是以前的版本,TDateTime 是 IEEE754,测量自 Delphi 纪元以来的天数。

您将需要与软件供应商取得联系,并尝试找出这些数据的真正格式。如果格式是非 IEEE754 浮点数据类型,那将是令人惊讶的。你确定它是浮点数吗?

关于delphi - Delphi 7中TDateTime的内部格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com