主题:请问如何读取不同类型的二进制文件
keyman
[专家分:0] 发布于 2010-06-05 10:06:00
我的二进制文件中有文本,integer(1),integer(2),real(4)等各种不同类型的数据,这个二进制文件是其他语言写的(C++或MATLAB等)。
这种二进制文件不能用顺序法读吧,因为一个数据和另一个数据之间没有FORTRAN保存数据时的分隔的东西。用直接法,定义RECL吧,这长度也不一样,怎么读啊?
FORTRAN能不能像C++中那样,定义不同的类型数组,然后指定读入的长度,来读一个文件中各种类型的二进制数据呢?
最后更新于:2010-06-05 10:11:00
回复列表 (共4个回复)
沙发
adda [专家分:1520] 发布于 2010-06-05 14:13:00
integer(1) a
integer(2) b
integer(4) c
open(1,file='1.dat',form='binary')
read(1) a, b, c
close(1)
板凳
keyman [专家分:0] 发布于 2010-06-05 20:05:00
谢谢adda关注
你这种方法不行啊
我的文件是用C++或MATLAB等其他语言写的,他们的二进制文件跟FORTRAN是不同的,FORTRAN在写文件时在每个数据间放了分隔的东西的
继续求助
3 楼
春上春数 [专家分:90] 发布于 2010-06-09 04:50:00
unsigned char magic[4];
4 楼
asymptotic [专家分:16630] 发布于 2010-06-09 16:57:00
我觉得您的问题,最好先用 C++ 或者 MatLab 将二进制数据换成十进制的数据,这一点对你来说,应该不难。然后再用 Fortran 读取格式化的数据,应该没有问题。
另外还有一个办法,考虑混合编程啦,尽量用 Fortran 2003 标准中的 Interoperability with C。
我来回复