如何将字符串转换为整数

时间:2010-11-17 08:35:28

标签: pascal

示例: a = 1 b = 2 c = 3 .. .. z = 26 aa = 27 ab = 28

如何将另一个字符串转换为整数?例如,我想将'lmao'转换为整数。请帮帮我:)谢谢。 在帕斯卡:)

1 个答案:

答案 0 :(得分:2)

要将普通的10字符串转换为数字,您可以从左到右取每个字符,将其转换为数字值(0到9之间)并将其添加到您已有的总数(初始化为零) 。如果您刚处理的字符后面有更多字符,则将总数乘以10.重复直到字符用完为止。

例如,数字374是3×10 2 + 7×10 1 + 4×10 0 。另一种写作方式,即更接近我上述转换算法的模型,是(((3)×10 + 7)×10 + 4.

您可以调整它来处理任何字符串,而不仅仅是数字字符。基数是26而不是10,所以乘以它。而不是数字,字符是 a z 。您的示例字符串将按如下方式进行评估:(( l )×26 + m )×26 + a )×26 + 0 。替换这些字母的数字,你得到219,742。

这是一些代码。它不会检查错误;它假定字符串只包含有效字符,并且该字符串不会表示太大而不适合Integer变量的数字。

function SpecialStrToInt(const s: string): Integer;
var
  i: Integer;
  subtotal: Integer;
  c: Char;
  charval: Integer;
begin
  subtotal := 0;
  for i := 1 to Length(s) do begin
    c := s[i];
    charval := Ord(c) - Ord('a') + 1;
    subtotal := subtotal * 26;
    subtotal := subtotal + charval;
  end;
  SpecialStrToInt := subtotal;
end;

您的格式奇怪的是无法表示零。