从单行读取多个十六进制值

时间:2015-08-16 19:04:52

标签: fortran hex fortran90 readfile

我想读取一组排成一行的十六进制值,但不确定每个值之间的空格数。我如何在Fortran 90中阅读此内容。例如:

  

2F4 ---- 33--6B5 ---------- 4DB3

initialize

1 个答案:

答案 0 :(得分:3)

使用“未格式化”输入(我现在的意思是格式化(即文本)fortran输入,不遵循特定的固定格式;不要与实际未格式化的输入混淆 [NB] )你最好的选择可能是将hexa值作为字符串读入,然后对字符串执行固定格式(而不是列表导向)读取:

program ReadSomeHex

implicit none

character*4 :: Hexval, Hexval2, Hexval3, Hexval4
integer:: Decval , Decval2 , Decval3 , Decval4 

Open(1,File='Input.txt')
Open(2,File='Output.txt')

read(1,*) Hexval, Hexval2, Hexval3, Hexval4
read(Hexval,'(Z4)') Decval
read(Hexval2,'(Z4)') Decval2
read(Hexval3,'(Z4)') Decval3
read(Hexval4,'(Z4)') Decval4

write(*,*)        Decval , Decval2 , Decval3 , Decval4

end program ReadSomeHex

请注意,您应确保每个六进制数最多为4个字符。

[NB] 如果您在Open期间未另行指定,则fortran会假定您的格式化输入/输出,即文本文件。