回 帖 发 新 帖 刷新版面

主题:二进制文件怎么用fortran读

求哪位大侠在fortran怎么读写二进制文件方面给我指点迷津。。。最好能提供一个程序范例。。

回复列表 (共22个回复)

11 楼


程序好像读的是错误的,请大侠查明。。。

12 楼

[quote]
程序好像读的是错误的,请大侠查明。。。[/quote]

能提供文件数据结构说明么?

13 楼


我也不清楚,我是通过Gromacs运行出来所产生的traj.trr,这是个轨迹文件,里面记录了粒子的坐标,速度,以及所受到的力。听我师兄说,可以先转换为16进制文件,这样读的要方便一些,因为毕竟16进制文件只要两个字节就可以存储。但是,转换之后,还是看不明白,里面到底是啥东东。

14 楼

[quote]
我也不清楚,我是通过Gromacs运行出来所产生的traj.trr,这是个轨迹文件,里面记录了粒子的坐标,速度,以及所受到的力。听我师兄说,可以先转换为16进制文件,这样读的要方便一些,因为毕竟16进制文件只要两个字节就可以存储。但是,转换之后,还是看不明白,里面到底是啥东东。[/quote]

你查一下Gromacs说明书,把输出文件结构搞清楚!

15 楼


好的,麻烦大侠啦。。一定给你好评啊

16 楼

现在初步探明,你的二进制文件是9336 bytes 一个block(Gromacs不了解,对应一个step?event?particle?),文件记录了100个block。每个block都有头信息,里面记录了block序号,头信息后面是数据。

现在需要知道每个头信息里面每次记录的数据3,36是什么意思?变量数?粒子数?

记录粒子的坐标,速度,以及所受到力数据类型是什么?数据怎么排列?

17 楼

[quote]
我也不清楚,我是通过Gromacs运行出来所产生的traj.trr,这是个轨迹文件,里面记录了粒子的坐标,速度,以及所受到的力。听我师兄说,可以先转换为16进制文件,这样读的要方便一些,因为毕竟16进制文件只要两个字节就可以存储。但是,转换之后,还是看不明白,里面到底是啥东东。[/quote]

从来没听说有16进制文件的说法。[em7]

18 楼

[size=3]大侠:对,应该是有100个block(我们理解为帧),每个block记录着步数step,时间t,然后是盒子的在x,y,z坐标内的长,宽,高,接着是盒子中所放粒子在x,y,z的分速度(这个文件中没有存储粒子的坐标和所受的力)。
师兄指点我在linux中输入vi -b traj.trr进入二进制文件的界面,然后输入:%!xxd,转换到16进制数据的界面。里面有些能看明白,但是大部分看不明白,特别是盒子的大小以及粒子的速度存储在哪一列,根本摸不着头脑。请大侠在这个方面传授我一点技巧,使我能够对以后的二进制文件能不再茫然。在此,小弟叩求。。。[/size]

19 楼

[quote][size=3]大侠:对,应该是有100个block(我们理解为帧),每个block记录着步数step,时间t,然后是盒子的在x,y,z坐标内的长,宽,高,接着是盒子中所放粒子在x,y,z的分速度(这个文件中没有存储粒子的坐标和所受的力)。
师兄指点我在linux中输入vi -b traj.trr进入二进制文件的界面,然后输入:%!xxd,转换到16进制数据的界面。里面有些能看明白,但是大部分看不明白,特别是盒子的大小以及粒子的速度存储在哪一列,根本摸不着头脑。请大侠在这个方面传授我一点技巧,使我能够对以后的二进制文件能不再茫然。在此,小弟叩求。。。[/size][/quote]


比如说这个文件的盒子大小x,y,z是多大?多少个粒子?粒子数随时间变化吗?x,y,z的分速度是单精度?双精度?一切靠猜,要解析这个文件相当困难的。[em1]

20 楼

其实每一个block的数据结构是一样的,我只要弄清楚每一个block就行了,然后运用循环依次读下去。只是现在对其尚不清楚。。。不知有没有有效的方法?

我来回复

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