【发布时间】:2014-08-11 16:32:19
【问题描述】:
我有一个将时间序列数据存储为打包二进制文件的第三方应用程序。我正在尝试创建一个工具来转换存储在此文件中的数据。
下面显示的是这些数据的快照。
41 16 00 00 01 00 D7 11 00 00 01 00 E8 55 A6 20 08 1E D0 08 00 00 00 60 59 D5
86 40 03 E8 F5 2C 22 08 1E D0 08 00 00 00 00 C0 0B 87 40 01 E8 95 B3 23 08 1E
D0 08 00 00 00 40 1E 00 87 40 01 E8 35 3A 25 08 1E D0 08 00 00 00 60 13 F8 86
40 01 E8 D5 C0 26 08 1E D0 08 00 00 00 40 65 09 87 40 01 E8 75 47 28 08 1E D0
08 00 00 00 20 8A F6 86 40 01 E8 15 CE 29 08
我知道这块数据对应以下值。
5/13/2013 17:46:11.558 730.6686401
5/13/2013 17:46:14.118 737.46875
5/13/2013 17:46:16.678 736.0147705
我可以提取值:它们是double 类型。比如00 00 00 60 59 D5 86 40这8个字节对应730.6686401。
但我对如何提取日期时间格式感到困惑。我知道它被埋在这个字符串的某个地方。我怎样才能知道时间的格式是什么?
我一直在使用 Python 的 struct 模块进行类型转换。
有人有什么想法吗?
【问题讨论】:
-
从其他 2 个浮点值来看,编码为双精度值,它们之间只有 9 个字节来编码日期时间值。
-
此外,序列 [08 1E D0 08] 重复 6 次,始终相隔 13 个字节。此块中是否只有 3 个值,还是超过 3 个?
-
@aruisdante:我想说那里至少有 6 套。
-
序列 [E8 X5] 也重复(在这种情况下为 7,但看起来这个块可能会被截断,并且会有另一个 08 1E 序列),其中 X 是一个可变数字,2 个字节08 1E序列之前
-
8个字节够存储信息吗?
标签: python datetime struct reverse-engineering