问题
如何创建一个能够以ASCII编写输出文件的程序,能够写入二进制数据(特别是32位浮点数)?
- 我如何设想最佳答案:将浮点值编码为ASCII字符的一些技巧,以便程序可以将ASCII编码的值(到.txt文件)和生成的.txt写入,重命名为.bin,设置了字节结构,以便它可以直接读取为二进制(最好是float32或float16,big-或little-endian)。
- 我如何设想一种解决方法:一种将ASCII值写入.vbs或.bat文件的技术,然后可以通过程序内的系统调用启动.vbs或.bat文件。 .vbs / .bat /等。将采用(硬编码的ASCII)值并以所需的二进制格式写出来。
背景
- 我的设置详情:我有一个第三方软件(“3PSW”)应用程序(光学分析的行业标准,FYI),使用方便的宏语言来设置长时间的计算分析。 3PSW可以进行系统调用。我在Windows XP上运行它。
- 为什么问题很严重:(A)将输出数据写入一个大的1000x1000矩阵需要更长的时间,这个IO瓶颈限制了我们用3PSW研究的范围(B)ASCII输出占用了磁盘空间明显多于二进制,(C)我需要3PSW的输出采用特定的二进制格式才能被另一个程序读取。
- 我目前的解决方法:我有MATLAB脚本来读取ASCII输出并以所需的二进制格式写出来。虽然这确定了功能,但重新格式化/重写步骤在程序中引入了更多的时间,有时候MATLAB&由于RAM内存使用,3PSW都挂起。计算持续时间成本限制了我们探索解决方案空间的粒度,从而影响了我们的结果质量。通过说VBSCRIPT而不是RAM密集型MATLAB完成重新格式化将减少由于内存而导致MATLAB& /或3PSW挂起的可能性,即使不影响持续时间。
- 我已经通知了3PSW的供应商有关此问题,他们是否计划将其纳入未来的发布中。
我们非常欢迎任何帮助/建议/指导/重定向,您的时间也是如此。谢谢。