回 帖 发 新 帖 刷新版面

主题:请问如何读取不同类型的二进制文件

我的二进制文件中有文本,integer(1),integer(2),real(4)等各种不同类型的数据,这个二进制文件是其他语言写的(C++或MATLAB等)。
这种二进制文件不能用顺序法读吧,因为一个数据和另一个数据之间没有FORTRAN保存数据时的分隔的东西。用直接法,定义RECL吧,这长度也不一样,怎么读啊?

FORTRAN能不能像C++中那样,定义不同的类型数组,然后指定读入的长度,来读一个文件中各种类型的二进制数据呢?

回复列表 (共4个回复)

沙发

integer(1) a
integer(2) b
integer(4) c

open(1,file='1.dat',form='binary')
read(1) a, b, c
close(1)

板凳


谢谢adda关注
你这种方法不行啊
我的文件是用C++或MATLAB等其他语言写的,他们的二进制文件跟FORTRAN是不同的,FORTRAN在写文件时在每个数据间放了分隔的东西的

继续求助

3 楼

unsigned char magic[4];

4 楼

我觉得您的问题,最好先用 C++ 或者 MatLab 将二进制数据换成十进制的数据,这一点对你来说,应该不难。然后再用 Fortran 读取格式化的数据,应该没有问题。

另外还有一个办法,考虑混合编程啦,尽量用 Fortran 2003 标准中的 Interoperability with C。

我来回复

您尚未登录,请登录后再回复。点此登录或注册