1

问题

我怎样才能制作一个程序,能够专门用 ASCII 编写输出文件,能够编写二进制数据(特别是 32 位浮点数)?

  • 我如何设想最佳答案:某种将浮点值编码为 ASCII 字符的技术,以便程序可以将该 ASCII 编码值写入(到 .txt 文件),并且重命名为 .bin 的结果 .txt 具有字节结构设置,以便它可以直接读取为二进制(最好是 float32 或 float16,big-endian 或 little-endian)。
  • 我如何设想一种解决方法:一种将 ASCII 值写入 .vbs 或 .bat 文件的技术,然后可以通过程序内部的系统调用启动该文件。.vbs/.bat/等。将获取(从 ASCII 硬编码的)值并以所需的二进制格式将它们写出。

背景

  • 关于我的设置的详细信息:我有一个第 3 方软件 (“3PSW”) 应用程序(光学分析的行业标准,仅供参考),我使用一种方便的宏语言来设置长期计算分析。3PSW 可以进行系统调用。我在 Windows XP 上运行它。
  • 为什么这个问题很重要:(A)将输出数据写入一个大的 1000x1000 矩阵需要更长的时间,而这个 IO 瓶颈限制了我们可以用 3PSW 研究的范围(B)ASCII 输出占用了更多的磁盘空间比二进制,(C)我需要 3PSW 的输出为特定的二进制格式,以便被另一个程序读取。
  • 我目前的解决方法:我有 MATLAB 脚本来读取 ASCII 输出并以所需的二进制格式写出。虽然这建立了功能,但重新格式化/重写步骤会在过程中引入更多时间,有时 MATLAB 和 3PSW 都会因 RAM 内存使用而挂起。计算持续时间成本限制了我们探索解决方案空间的粒度,从而损害了结果的质量。通过说 VBSCRIPT 而不是 RAM 密集型 MATLAB 完成重新格式化将减少 MATLAB 和/或 3PSW 由于内存而挂起的机会,即使不影响持续时间。
  • 我已就此通知 3PSW 的供应商,并且他们是否计划将其包含在未来的版本中,我将任其摆布。

任何帮助/建议/指导/重定向都是非常受欢迎的,就像您考虑的时间一样。谢谢你。

4

1 回答 1

1

如果不重写应用程序,我认为你想要的东西是不可能的。如果应用程序能够将其输出写入 STDOUT 而不是文件,您可以实现一个过滤器,在将 ASCII 数据流写入文件之前将其转换为二进制流,但仅此而已。

于 2013-04-24T07:59:01.323 回答