Fortran Coder

查看: 7353|回复: 2
打印 上一主题 下一主题

[文件读写] 读入二进制文件结果不对,求助。

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
48 元
贡献
24 点
跳转到指定楼层
楼主
发表于 2019-1-24 17:27:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)会不会有区别?

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

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

5

帖子

2

主题

0

精华

入门

F 币
48 元
贡献
24 点
板凳
 楼主| 发表于 2019-1-25 10:37:51 | 只看该作者
vvt 发表于 2019-1-25 09:05
你可以试试看看视频教程 v.fcode.cn 基础篇,文件读写下集。
tes 肯定要双精度的。
你可以把二进制文件传到 ...

谢谢!今天试了试加上kind=8就对了~
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 20:58

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表