Fortran把字符型数据输出为二进制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fortran把字符型数据输出为二进制相关的知识,希望对你有一定的参考价值。
输出二进制是为了减小生成文件的大小,这些数据输出后用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""
尽管你按照二进制方式打开文件,但你输出的数据,都是字符串,字符串的二进制形式与文本是一样的。只有整型和浮点数,才有差异。
二进制文件中也可以包含文本的部分,例如字符串。你可以试试用记事本打开一个 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"'追问
这样好像不对啊,tecplot提示unexpected end of file in datafile header.
追答可以不要这一行write(666) 'TITLE="simulation results"'
你可以不用二进制输出,看看输出的结果是什么
R语言数值型转化成字符串
在R中,我导入的文件中有一个变量是30个数字组成的,系统把它当做数值型变量处理的,输出的时候是科学计数法的形式输出。有没有一种能够保持它原来状态的方法啊?
把这个数字存成字符串,用的时候再用as.numeric()变成数字; 参考技术A 比如数据框名字为test,数据列A1是字符型,转化为数值型的直接可以:test$A1=as.numeric(test$A1)
就可以将原数据框中的A1列进行转换
以上是关于Fortran把字符型数据输出为二进制的主要内容,如果未能解决你的问题,请参考以下文章