Python如何读取Little Endian(小端)格式二进制文件内容到变量
问题原因
你原来的读取代码把调用顺序写反了:struct.unpack() 需要接收从文件读取到的二进制字节作为入参,而不是作为 fp.read() 的参数传入。
修正后的代码
import struct # 写入逻辑和原代码一致 with open("test-09.bin", "wb") as fp: fp.write(struct.pack("<4d", 3.14159, 42.0, 123.456, 987.654)) # 修正后的读取逻辑 with open("test-09.bin", "rb") as fp: # 先读取二进制内容,再传入unpack解析 bin_content = fp.read() float_list = struct.unpack("<4d", bin_content) # 验证输出:结果为 (3.14159, 42.0, 123.456, 987.654) print(float_list)
补充说明
- 格式符
<4d对应4个小端双精度浮点数,每个浮点数占8字节,总长度为32字节。如果你的二进制文件可能存在多余后缀内容,可以改为精确读取固定长度避免报错:bin_content = fp.read(4 * 8) struct.unpack固定返回元组类型,如果你需要把四个数值单独赋值给变量,可以写成num1, num2, num3, num4 = struct.unpack("<4d", bin_content)
内容的提问来源于stack exchange,提问作者KateMac
相关产品推荐
相关产品推荐

