使用Python从二进制文件读取32位有符号IEEE 754浮点数?

25 投票
4 回答
28033 浏览
提问于 2025-04-16 19:12

我有一个二进制文件,这个文件里面简单来说就是一串有符号的32位IEEE754浮点数。它们之间没有任何分隔符,直接一个接一个地排列,直到文件结束。

我该如何从这个文件中读取这些数据,并正确地把它们解释为浮点数呢?

我试过用 read(4),但是它会自动把这些数转换成带有ASCII编码的字符串。

我也尝试过用 bytearray,但那样只能一次读取1个字节,而我需要的是一次读取4个字节。

4 个回答

3

这段代码的意思是……

首先,它定义了一个函数,这个函数可以接收一些输入,然后根据这些输入来执行特定的操作。函数就像一个小机器,你给它原料,它就能给你产出结果。

接下来,代码中可能会有一些条件判断,比如说“如果这个条件成立,就执行这段代码,否则执行另一段代码”。这就像是在做决定,只有在满足特定条件时,才会采取某种行动。

还有可能会看到一些循环,比如“重复执行这段代码,直到满足某个条件”。这就像是在反复做同一件事情,直到你觉得可以停止为止。

最后,代码的结果会被返回,意味着这个函数完成了它的工作,给你一个结果,你可以用这个结果做其他事情。

总之,这段代码就是在告诉计算机如何处理输入,做出决策,并返回结果。希望这个解释能让你更容易理解!

import struct
(num,) = struct.unpack('f', f.read(4))
5

看看这个链接 struct.unpack。类似下面的代码可能会有效...

f = struct.unpack('f', data_read)
35
struct.unpack('f', file.read(4))

你还可以一次性解包多个,这样会更快:

struct.unpack('f'*n, file.read(4*n))

撰写回答