为什么从string转换为int会导致奇怪的值

时间:2016-05-26 14:07:19

标签: string f# int

我是F#的新手,我无法找到数字字符串的最后一个元素并将该元素转换为int。所以,如果字符串是“123”,那么我想要回到3.但是,这段代码:

  let s (a : string) =
      let x = a.[0]
      int x

当我s "123"时,这让我回到了49。我无法弄清楚为什么会这样。此外,当我输入字符串“124”时它仍然给我49.有人可以解释为什么会发生这种情况以及如何解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

a.[0]返回a的第一个字符'1'。将字符转换为int会返回其ASCII code。您需要在字符串上调用int

let x = a.Substring(a.Length - 1)
int x

(我在第一行使用了标准的.Net方法; F#标准库也有相同的功能。)

答案 1 :(得分:2)

正如您通过索引字符串注意到的那样,F#将其视为字符数组 看看:ASCII Table

int'1'基本上是字符“1”

的整数值

您可能需要int "1"Int32.Parse("1")Int32.TryParse

Parsing Numeric Strings in the .NET Framework