如何在bash中使用标准Unix命令行工具写入32位IEEE-754浮点值到文件?
在bash中将十进制小数以32位IEEE-754浮点格式写入文件的实现方法
可以实现,仅用绝大多数Unix-like系统默认预装的标准工具即可完成,无需额外安装第三方软件。
方法1:使用Perl(兼容性最高,几乎所有Unix系统默认预装)
首先设置变量示例:x=1.5
执行写入命令:perl -e "print pack('f', $x)" > my_file
说明:Perl的pack函数中f模板对应原生32位IEEE-754单精度浮点数,直接输出二进制流重定向到目标文件即可。
验证写入结果:od -t f4 my_file
执行后会输出类似0000000 1.5的结果,即可确认写入正确。
方法2:使用Python(适配当前主流Linux发行版)
写入命令:python3 -c "import struct, sys; sys.stdout.buffer.write(struct.pack('f', float(sys.argv[1])))" "$x" > my_file
如果需要强制指定字节序,可修改pack的格式参数:
- 强制小端序:替换为
<f - 强制大端序:替换为
>f
注意事项
- 上述命令默认使用系统原生字节序写入,有跨平台读取需求时建议显式指定字节序
- 写入的文件为纯二进制格式,不要使用普通文本编辑器打开编辑,否则会破坏浮点数据结构
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

