我有一个用下面的Delphi声明编写的文件。。。在
Type
Tfulldata = Record
dpoints, dloops : integer;
dtime, bT, sT, hI, LI : real;
tm : real;
data : array[1..armax] Of Real;
End;
...
Var:
fh: File Of Tfulldata;
如果可能的话,我想用Python分析文件中的数据(大小为MB)-有没有一种简单的方法可以读入数据并将数据转换成类似Delphi记录格式的Python对象?有人知道图书馆可能会这样做吗?在
这是在Delphi 7上编译的,下面的选项可能(或可能不是)相关的
这里是完整的解决方案,多亏了基里安兹和里萨特·霍恩斯特拉的提示
我不知道Delphi如何在内部存储数据,但是如果它是简单的字节数据(因此没有序列化和损坏),请使用struct。这样就可以将python文件中的字符串视为二进制数据。另外,打开二进制文件
file(open,'rb')
。在请注意,当您在Delphi中定义一个记录(如C中的struct)时,字段是按顺序和二进制进行布局的(例如字节在1字节边界上对齐,单词在2字节上对齐,整数在4字节上对齐等等),但是它可能会因编译器的设置而有所不同。在
当序列化到一个文件时,你可能意味着这个记录以二进制形式写入到文件中,而下一个记录是在第一个记录之后从位置sizeof(structure)等开始写入的。Delphi没有指定如何将东西序列化到/从文件中序列化,因此您提供的信息让我们只能猜测。在
如果您想确保它始终相同而不受任何编译器设置的干扰,请使用压缩记录。在
Real可以有多种含义(对于早期的Delphi版本,它是一个48位的float类型,稍后是64位float(IEEE double))。在
如果您不能访问Delphi代码或自己编译它,只需使用HEX编辑器检查数据,您应该清楚地看到记录的边界,因为它们以整数开头,后面只有浮点。在
相关问题 更多 >
编程相关推荐