Fortran把字符型数据输出为二进制

输出二进制是为了减小生成文件的大小,这些数据输出后用tecplot后处理;下面是我的部分代码,执行后发现这部分不是二进制。请问怎么修改?多谢!open(666,file=... 输出二进制是为了减小生成文件的大小,这些数据输出后用tecplot后处理;
下面是我的部分代码,执行后发现这部分不是二进制。请问怎么修改?多谢!

open(666,file = ch_out, status='unknown',FORM='UNFORMATTED') ! binary output
write(666) "TITLE="""simulation results"" ! gfz
write(666) "VARIABLES=""X"",""Y"",""DX"",""DY"",""VX"",""VY"",""DAM"",""W""
展开
 我来答
天河流纹石
2013-09-26 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4047万
展开全部
  1. 尽管你按照二进制方式打开文件,但你输出的数据,都是字符串,字符串的二进制形式与文本是一样的。只有整型和浮点数,才有差异。

  2. 二进制文件中也可以包含文本的镇册部分,例如字符串。你可以试试用记事本打开一个 exe 文件,这就是二进制御启宏的,但是你依然可以看到其中有一些字符串,例如 This program cann't run under DOS 之类的。

  3. 如果你只输出字符串,那么文本文件旁知和二进制文件就完全没有任何差异了。也不会减小文件的大小。

  4. 关于二进制的读写,你还需要更多的学习。我建议你使用直接读写方式,而不是顺序读写。也就是 access = 'direct' 并指定 RecL 和 Rec

追问
遇见高手了!多谢!
1. 我用ultraedit 打开正确的输出,发现确实是字符串。
不过不是“simulation”而是“s..i..m..u..l..a”这样
2. 多谢,以前还不知道
3. 我的输出只是在开头有一些字符串,中间99.99%的都是实数
4.嗯,我再看看资料。刚用一点点
追答
你的其他99.99%的部分,是正确的二进制么?

我想不到为什么会是 s..i..m..u..l..a 这样的,我建议你把代码和生成的文件打包上传到百度网盘,并分享给我。
嗯,关于二进制的读写,你可以看我百度空间的日志:
http://hi.baidu.com/olid_stone/item/ad1a4cc822b1241051505880
上河鱼霸
2013-09-26 · TA获得超过232个赞
知道小有建树答主
回答量:133
采纳率:100%
帮助的人:112万
展开全部
这样的格式输出乱孝是二进制没错。

可能是你引号没用对,导致Tec无哗扮稿法正确读取,输出缺轮代码修改如下:

write(666) 'TITLE="simulation results"' ! gfz write(666) 'VARIABLES="X","Y","DX","DY","VX","VY","DAM","W"'
追问
这样好像不对啊,tecplot提示unexpected end of file in datafile header.
追答
可以不要这一行write(666) 'TITLE="simulation results"'
你可以不用二进制输出,看看输出的结果是什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式