使用Python从二进制文件读取32位有符号IEEE 754浮点数?
我有一个二进制文件,这个文件里面简单来说就是一串有符号的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))