【问题标题】:Convert Binary Data File to Text File将二进制数据文件转换为文本文件
【发布时间】:2014-07-30 08:47:58
【问题描述】:

我的硬盘上有一个 .bin 文件。 它的记录是 nx*ny*4。它的尺寸是 (241,121)。 241 x 维度。 121 在 y 维度。 如何使用 fortran 将其转换为我可以打开和读取数字的 ascii 文件?

到目前为止,我已经尝试过了

real :: g1(241,121) 
open(unit=1,file=gaugemax2010.bin',status='old',
form='unformatted',access='direct',recl=nx*ny*4) 


open(unit=5,file='g2010.txt',status='unknown', 
form='unformatted',access='direct',recl=1) 

read(1, rec=1) ((g1(i,j,),i=1,nx,j=1,ny)
write(5, rec=1) (g1(i,j,),i=1,241),h=1,121) 
end

没有成功

【问题讨论】:

  • 用什么语言写的?你有那个代码吗?您知道该文件包含单精度实数吗?为什么说它不起作用……输出的值是错误的?
  • 修复简单的语法错误、杂散的逗号和不平衡的括号:read(1, rec=1) ((g1(i,j),i=1,nx),j=1,ny)。 Obvioulsy h 在第二种情况下应该是 j ...当然,由于您的数组的尺寸完全正确,您可以这样做 read(1,rec=1)g1

标签: text binary fortran ascii


【解决方案1】:

FORM='UNFORMATTED'binary 内容打开一个文件。对于纯文本,您必须指定FORM='FORMATTED'

有关OPEN 声明的更多详细信息,请参见此处:Opening Binary Files in Fortran: Status, Form, Access

【讨论】:

  • 我一般用form='binary'。有什么区别吗?
  • software.intel.com/sites/products/documentation/doclib/stdxe/… unformatted 似乎还保留了一些记录结构?
  • @bdforbes 这似乎是一些供应商扩展。该标准(第 9.5.6.11 节)规定 “OPEN 语句中的 FORM= 说明符 [...] 应评估为 FORMATTED 或 UNFORMATTED。”
猜你喜欢
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多