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"" 展开
下面是我的部分代码,执行后发现这部分不是二进制。请问怎么修改?多谢!
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"" 展开
展开全部
尽管你按照二进制方式打开文件,但你输出的数据,都是字符串,字符串的二进制形式与文本是一样的。只有整型和浮点数,才有差异。
二进制文件中也可以包含文本的镇册部分,例如字符串。你可以试试用记事本打开一个 exe 文件,这就是二进制御启宏的,但是你依然可以看到其中有一些字符串,例如 This program cann't run under DOS 之类的。
如果你只输出字符串,那么文本文件旁知和二进制文件就完全没有任何差异了。也不会减小文件的大小。
关于二进制的读写,你还需要更多的学习。我建议你使用直接读写方式,而不是顺序读写。也就是 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
展开全部
这样的格式输出乱孝是二进制没错。
可能是你引号没用对,导致Tec无哗扮稿法正确读取,输出缺轮代码修改如下:
write(666) 'TITLE="simulation results"' ! gfz write(666) 'VARIABLES="X","Y","DX","DY","VX","VY","DAM","W"'
可能是你引号没用对,导致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"'
你可以不用二进制输出,看看输出的结果是什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询