F#-将字符转换为int

F#-将字符转换为int,f#,functional-programming,F#,Functional Programming,在为一个项目用F#编码时,我已经到了一个点,我想把一个字符转换成一个int let c = '3' c |> int //this will however give the ascii value of 3 I believe 我的问题是,在字符仅包含一个数字的情况下,在不将字符转换为字符串或其他类型的情况下,将单个字符转换为int的最佳方式是什么?假设您已验证该字符并知道它是ASCII数字,您可以执行以下操作: let inline charToInt c = int c - int

在为一个项目用F#编码时,我已经到了一个点,我想把一个字符转换成一个int

let c = '3'
c |> int //this will however give the ascii value of 3 I believe

我的问题是,在字符仅包含一个数字的情况下,在不将字符转换为字符串或其他类型的情况下,将单个字符转换为int的最佳方式是什么?

假设您已验证该字符并知道它是ASCII数字,您可以执行以下操作:

let inline charToInt c = int c - int '0'

let c = '3'
c |> charToInt


注意:如果您最终需要一个
浮点值
而不是
整数
,那么有一个内置机制:

如果您试图转换a->0,b->1,…,z->26。那你就可以这么做了

let let2nat (letter : char) = int letter - int 'a'
如果你只是想要ascii码,你可以这样做

let let2ascii (let2ascii : char) = int let2ascii

首先转换为字符串:

c |> sprintf "%c" |> int
有一个核心助手


我想我会坚持使用
System.Char.GetNumericValue
并将其管道化到
int
。谢谢。
c|>System.Globalization.CharUnicodeInfo.GetDigitValue
let c = 'a'
Convert.ToInt32 c