连接两个整数

时间:2012-02-01 16:26:53

标签: fortran concatenation integer

在Fortran中将两个整数连接到整数的最佳方法是什么?

integer a = 999
integer b = 1111

integer c应为9991111

谢谢, SM。

3 个答案:

答案 0 :(得分:8)

以下示例代码可以满足您的需求。它将整数写入字符串,修剪并连接它们,然后从连接的字符串中读取结果整数:

integer :: a,b,c
character(len=99) :: char_a,char_b,char_c

a = 999
b = 1111

write(unit=char_a,fmt=*)a
write(unit=char_b,fmt=*)b

char_c = trim(adjustl(char_a))//trim(adjustl(char_b))

read(unit=char_c,fmt=*)c

print*,c

end

编辑:请注意,此示例对于任何整数长度都是通用的,假设它们适合各自的kind(无整数溢出)。

答案 1 :(得分:2)

您可以使用数字顺序的信息:

integer :: a = 999
integer :: b = 1111

integer :: c

c = a * 10**(ceiling(log10(real(b)))) + b

write(*,*) c

答案 2 :(得分:0)

最好的办法是使用internal files将两个整数转换为一个字符,然后将其转换回整数。

没有将数值转换为字符/字符串表示的内在过程。有关更多信息,请参阅Fortran Wiki上的this discusson(参见“注意”部分)。

例如,在您的情况下,您可以使用以下内容:

program test_conversion
  implicit none

  integer :: a=999
  integer :: b=1111
  integer :: c

  character(len=7) :: temp

  write(temp, '(i3.3, i4.4)') a, b ! You may need to change these format specifiers

  read(temp, *) c

  print*, c ! This prints 9991111

end program test_conversion

如果想要整数字符表示的宽度不同,则必须更改格式字符串。