Python中是否有Matlab/Octave fwrite写入变量到二进制文件的等效命令?
Python中Matlab fwrite写入uint16二进制文件的等效实现
你所需的Matlab命令a = fwrite(myfile, uint16(x), "uint16");,在Python中有两种常用的等效实现方案:
- 使用Python标准库
struct模块,无需额外安装依赖,适合写入少量uint16数值的场景:
import struct # 示例待写入数据 x = [100, 200, 65535] # 以二进制写模式打开文件 with open("output.bin", "wb") as f: # <表示小端字节序,>表示大端字节序,H表示uint16类型,长度匹配x的元素数量 f.write(struct.pack(f"<{len(x)}H", *x))
你可以根据Matlab默认的字节序调整<或>,保证两端字节序一致即可正常读取。
- 使用
numpy库,适合处理大规模数值数组的场景,操作逻辑和Matlab更贴近:
import numpy as np # 构造uint16类型的数组 x = np.array([100, 200, 65535], dtype=np.uint16) # 直接写入二进制文件 x.tofile("output.bin") # 如需指定字节序可调整dtype: # dtype="<u2" 表示小端uint16 # dtype=">u2" 表示大端uint16
该方法写入的二进制文件和Matlab的fwrite/fread完全兼容,只要两端指定的数据类型、字节序一致即可。
内容的提问来源于stack exchange,提问作者fpga
相关产品推荐
相关产品推荐

