将字符串转换为实数或双精度数

时间:2014-03-21 10:54:08

标签: fortran90

在f90中,我需要将30个字符的字符串编码为real / double,并将其从与此实数/双数不同的位置恢复。怎么做? 谢谢, 标记

1 个答案:

答案 0 :(得分:0)

我不会使用双打,我会使用整数。特别是整数的数组。以及将字符转换为ASCII等价物并返回(分别)的内在函数icharachar

你可以轻松地提起这件事:

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模块)也可以解决问题。