FORTRAN读取未格式化二进制文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FORTRAN
·
2003 4
C/C++ FORTRAN FORTRAN …… FORTRAN “a” 4
open(60,file=filename,status=’unknow’,form=’unformatted’)
write(60) nx,ny,nz
do k=1,nz
do j=1,ny
write(60) (a(i,j,k),i=1,nx)
enddo
enddo
close(60)
(4*nx)*ny*nz+12 nz*ny*(4*nx+8)+20
FORTRAN “ ” 4 4 4 4
write(60) nx,ny,nz
nx,ny,nz 4 2
0 12 nx ny nz 0 12
20(2+2+4+4+4+2+2)
write(60) (a(i,j,k),i=1,nx)
nx 1024
0 4096 a(1,j,k) a(2,j,k) ……a(1024,j,k) 0 4096
4104(2+2+4+4+……+4+2+2) C/C++
open(60,file=filename,status=’unknow’,form=’unformatted’)
write(60) nx,ny,nz
do k=1,nz
do j=1,ny
do i=1,nx
write(60)a(i,j,k)
enddo
enddo
enddo
close(60)
a
4 12 nx*ny*nz*12+20
FORTRAN FORTRAN “ ”
#define SWAP_2(x) ( (((x) & 0xff) << 8) | ((unsigned short) (x) >> 8) )
#define SWAP_4(x) ( ((x) << 24 | (((x) << 8) & 0x00ff0000 | (((x) >> 8) & 0x0000ff00) | ((x) >> 24) )
#define FIX_SHORT(x) (*(unsigned short *)&(x) = SWAP_2(*(unsigned short * )&(x))) #define FIX_LONG(x) (*(unsigned *)&(x) = SWAP_4(*(unsigned *)&(x)))
#define FIX_FLOAT(x) FIX_LONG(x)
4
/
ASCII
2008 1 64 2 4 2 FORTRAN access=’stream’