在Matlab中,二进制文件部分"块"为2048字节,读取方式如下:
fseek(fileID, 2024, 'bof');
data = fread(fileID, block, '*float');
数据输出为2048x1单精度阵列,示例如下。。。
15.5567
-1.9876
0.0529
25.97620
在Python中,我确保查找文件的同一部分,并使用2048字节的"块"读取二进制部分。然后,我尝试使用structunpack函数将二进制转换为单精度浮点数。
fileID.seek(2024,0)
data = unpack('2048f',block)
首先,我得到字节对象长度的错误。所以我改变了大小,看看输出是否会给我类似的东西。
data = unpack('512f',block)
print(data)
输出给出非常小和更大的数字
-14.858826637268066
5.938749347655264e-36
1.767982006072998
-24509016064.0
感谢您的帮助。我还试着使用
data = numpy.frombuffer(block, dtype=numpy.float32)
结果基本相同。
这是我找到的答案。工作非常完美。
data = []
for i in range(0, 2048):
data.append(unpack('>f', fileID.read(4))[0]
数据的输出与Matlab完全相同。