如果我有其中一个文件的内容,就可以破解二进制文件格式



我有大约300个测量值(每个都存储在一个dat文件中(,我想使用MATLAB或Python读取这些测量值。可以使用专有程序将文件导出为文本或csv,但这必须逐个完成。

问题是:使用导出文件中的已知内容破解二进制文件格式的最佳方法是什么?

不确定这是否会使破解变得更容易,但文件只有两列(900k(数字,从dat文件的大小(1800668字节(来看,似乎每个数字都是16位(浮点(,还有一些其他信息(可能是标头(。

我试着使用HEX编辑器,但没能从中发现任何趋势。

最后,我想确保具体说明这些是我进行的测量,其中的数据属于我。我并没有试图获得我不应该获得的数据。

谢谢你的帮助。

编辑:读得更多了,我意识到我正在进行某种压缩。当你查看StreamWare中的数据时,它给出了7位小数,这让我相信它是一个单精度值(4字节(。但是,文件的大小表明每个值只占用2个字节。

经过进一步思考,我终于明白了。这是非常具体的,但只是为了防止另一个Dantec StreamWare用户遇到同样的问题,这可以为他/她节省一点时间。

首先,数据实际上只是一个向量。根据记录信号的长度和采样频率来计算时间列。这些信息可能在标题中(但我没能破解那部分(。

为了获得MATLAB中的值,我使用fseek(fid, 668, 'bof')跳过了头部字节,然后使用fread(fid, 900000, 'uint16')读取uint16中的数据。这会给你整数。

要得到浮点值,你所要做的就是除以2^16(这是一个16位分辨率的系统(,然后乘以10。我认为系数10取决于您的数据采集系统的范围。

我希望这能有所帮助。

相关内容

最新更新