在f90中,我需要将30个字符的字符串编码为real / double,并将其从与此实数/双数不同的位置恢复。怎么做? 谢谢, 标记
答案 0 :(得分:0)
我不会使用双打,我会使用整数。特别是整数的数组。以及将字符转换为ASCII等价物并返回(分别)的内在函数ichar
和achar
。
你可以轻松地提起这件事:
program string_to_int
implicit none
integer :: mystring_int(30), i
character(len=30) :: mystring
mystring = "Fortran is the best language!!"
do i=1,30
mystring_int(i) = ichar(mystring(i:i))
enddo
print *,mystring_int
call read_back_int(mystring_int)
contains
subroutine read_back_int(cvar)
integer, intent(in) :: cvar(:)
character(len=size(cvar)) :: substring
integer :: i
do i=1,size(cvar)
substring(i:i) = achar(cvar(i))
enddo
print *,substring
end subroutine read_back_int
end program string_to_int
使用(内在)函数sizeof
,它向我显示字符串是30个字节,而整数数组是120个字节。如果确实想要使用double,那么将integer
替换为real(kind=c_double)
(需要iso_c_binding
模块)也可以解决问题。