gpt4 book ai didi

delphi - 尝试解码日期时间编码 - 列出的示例

转载 作者:行者123 更新时间:2023-12-03 15:54:45 27 4
gpt4 key购买 nike

我有一个问题,几个月来一直困扰着我。我有一个正在尝试添加内容的应用程序。为此,我需要解码文件结构并能够模拟它。我已经解码了除日期/时间字段之外的所有内容。

我相信开头的十六进制 11 表示以下是日期/时间条目,因此不是日期时间的一部分。此外,接下来的 8 个字节是日期时间,给出了它们各自产生的日期/时间。我不知道转换是如何完成的。

如果有帮助的话,我相信生成该文件的源代码是用 Delphi 编写的。

以下是 7 个示例:

HEX Value                     Date Time Produced
-------------------------- ------------------
11 a2 97 78 0a dd 3e e4 40 07/07/2013 09:46:50 PM
11 5c 6c 32 0b dd 3e e4 40 07/07/2013 09:46:58 PM
11 67 b1 76 e0 dd 3e e4 40 07/07/2013 10:24:27 PM
11 38 a7 e1 55 bc 42 e4 40 08/07/2013 09:15:05 PM
11 d9 4e e4 58 bc 42 e4 40 08/07/2013 09:15:37 PM
11 d2 2a f9 13 49 89 dc 40 01/01/1980 03:24:15 AM
11 d4 fb 78 63 c5 42 e4 40 08/08/2013 04:02:29 AM
11 e5 01 c9 62 c5 42 e4 40 08/08/2013 04:02:21 AM

最佳答案

实际上,这些字符串看起来像 Delphi TDatetime 的十六进制表示形式。 type 是 Double 类型(8 个字节)的别名,其中 TDateTime 值的整数部分是自 12/以来经过的天数30/1899TDateTime 值的小数部分是已过去 24 小时的小数部分。

在 Delphi 中,您可以使用 HexToBin 解析这些值。功能就像这样

{$APPTYPE CONSOLE}

uses
System.Classes,
System.SysUtils;

function Decode(const HexStr: AnsiString) : TDateTime;
begin
Assert(Length(HexStr)=16, 'Lenght must be 16');
HexToBin(PAnsiChar(HexStr), @Result, SizeOf(TDateTime));
end;


begin
try
Writeln(DateTimeToStr(Decode('a297780add3ee440')));
Writeln(DateTimeToStr(Decode('5c6c320bdd3ee440')));
Writeln(DateTimeToStr(Decode('67b176e0dd3ee440')));
Writeln(DateTimeToStr(Decode('38a7e155bc42e440')));
Writeln(DateTimeToStr(Decode('d94ee458bc42e440')));
Writeln(DateTimeToStr(Decode('d22af9134989dc40')));
Writeln(DateTimeToStr(Decode('d4fb7863c542e440')));
Writeln(DateTimeToStr(Decode('e501c962c542e440')));
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
ReadLn;
end.

这将返回

07-07-2013 21:46:50
07-07-2013 21:46:58
07-07-2013 22:24:27
07-08-2013 21:15:05
07-08-2013 21:15:37
01-01-1980 3:24:15
08-08-2013 4:02:29
08-08-2013 4:02:21

关于delphi - 尝试解码日期时间编码 - 列出的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20257685/

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