intel fortran读二进制文件,一次只读一个字节如何实现?

intel fortran读二进制文件,一次只读一个字节如何实现?,第1张

第一种方法,适合于 Windows 下 visual fortran 编译器。(compaq 或 intel)

通过 Open 语句,设置  Access = 'Direct' , Form = 'Unformatted' , RecL = 1

然后通过设置编译器工程属性的 Fortran,Data,Use Bytes as RECL= Unit for Unformatted Files 来改变。

第二种方法,适合于所有 windows 下支持 API 接口的编译器。

通过 CreateFile 打开文件。

通过 ReadFile 读取文件,每次可指定读取任意字节的内容。

第三种方法,适合任意编译器,但稍微麻烦,且别扭。

通过 Open 语句,设置  Access = 'Direct' , Form = 'Unformatted' , RecL = 1

如果该编译器的 RecL = 1 表示 4 字节,则通过设定一个4长度的字符串,读取一个 Rec 后,取该字符串的子串。例如 character(len=4) c integer i read( 12 , rec = 记录号 ) c i = c(1)

给你一个例子:

Program main

Implicit None

Integer*4 :: iVar1 , iVar2

Real*4 :: rVar1 , rVar2

Character(Len=16) :: cStr

Open( 12 , File = 'TestBin.Bin' , Access = 'Direct' , Form = 'Unformatted' , RecL = 4 )

Read( 12 , Rec = 2 ) cStr

Read( 12 , Rec = 1 ) iVar1 , iVar2 , rVar1 , rVar2

Write( * , * ) cStr

Write( * , * ) iVar1 , iVar2 , rVar1 , rVar2

Close( 12 )

End Program main

二进制文件为Test.Bin


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11769556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存