Fortran Coder

标题: 读入二进制文件结果不对,求助。 [打印本页]

作者: gerzer    时间: 2019-1-24 17:27
标题: 读入二进制文件结果不对,求助。
本帖最后由 gerzer 于 2019-1-24 19:37 编辑

要用Fortran读一个二进制的dat数据,我没有写数据的源码,不知道如何写的,唯一知道的就是用MATLAB读这个数据的语句,如下:
fid = fopen('qwe.dat','r');
status = fseek(fid,0,'bof');
t = fread(fid,409,'float64');
查过MATLAB官网,float64是64位8字节的数据类型,所以用Fortran读这个二进制文件的句子我是这么写的:
real::tes
open(11,file='qwe.dat',status='old',action='read',form='unformatted',access='direct',recl=2)
read(11,rec=1)tes
我想先读第一个数看一下,发现不对,正确的话应该是26.3,读入的结果是10的-11次方量级。读了前十个数,都要么很大要么很小,量级差别太大。
http://fcode.cn/guide-4-1.html 这个网页里提到不同编译器对recl的定义不同,所以我又试了recl=8,读前十个数,依然不对。recl我从1到10试了一遍都读不对,不知道问题出在哪里……
系统xp,编译器cvf6.6.
如果一开始把变量的类型设置成real(kind=8)会不会有区别?


作者: vvt    时间: 2019-1-25 09:05
你可以试试看看视频教程 v.fcode.cn 基础篇,文件读写下集。
tes 肯定要双精度的。
你可以把二进制文件传到网盘里,让别人下载试一下。(否则只能靠猜,不靠谱)
作者: gerzer    时间: 2019-1-25 10:37
vvt 发表于 2019-1-25 09:05
你可以试试看看视频教程 v.fcode.cn 基础篇,文件读写下集。
tes 肯定要双精度的。
你可以把二进制文件传到 ...

谢谢!今天试了试加上kind=8就对了~




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2