我想读取一组排成一行的十六进制值,但不确定每个值之间的空格数。我如何在Fortran 90中阅读此内容。例如:
2F4 ---- 33--6B5 ---------- 4DB3
initialize
答案 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会假定您的格式化输入/输出,即文本文件。