- 积分
- 55
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-5-12
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 小鑫 于 2016-5-15 15:22 编辑
向各位大神求助!HLEP!
我现在在用自己的程序读取商用软件fluent的二进制dat中的数据。dat数据中在我需要读取的各组数据之前有长度不一的数据(类似头文件),例如前面不需要的数据长度为34347字节,而接下来我需要读入的数据是2600个实数(2600X8字节)。目前我用的是fortran的直接读取操作,先是定义RECL=34347,然后READ(**,rec=2)(p(i),i=1,2600)这样读入我需要的数据p(一维数组长度2600)。但是当dat数据量非常大的时候,往往出现不需要读取的头数据长度m>2^31,此时我无法定义RECL=m.想请教大神有什么方法,可以读取我所需要的数据。我现在的想法是有没有命令可以移动打开二进制文件时的最初读取位置,将其由文件头转移至第m+1字节,这样我就可以读取我所需大小的数据了。
求助!
fluent二进制dat数据,前面的表头其实有很多,但都写在一块
第二组我要读入的数据和表头
附一下我的程序:
CHARACTER(1403):: dum !用于接收第一组数据前表头字符
point_number2=22309 !第二组数据前的字符数量
point_number3=34347 !第三组数据前的字符数量
OPEN(19,FILE=***,FORM="UNFORMATTED",STATUS="OLD“ ,ACCESS="DIRECT",RECL=point_number2 ,MODE="READ")
READ(19,REC=1) dum, (p(i),i=1,2600) !读入第一组数据p
READ(19,REC=2) (pb(i),i=bfp_s(1),bfp_e(1))!读入第二组数据pb
CLOSE(19)
OPEN(19,FILE=***,FORM="UNFORMATTED",STATUS="OLD“ ,ACCESS="DIRECT",RECL=point_number3 ,MODE="READ")
READ(19,REC=2) (pb(i),i=bfp_s(2),bfp_e(2))!读入第三组数据pb
|
|