Convert.ToInt32(string)方法返回错误值

3

当我使用convert.toint32解析字符串时,我得到了奇怪的数字。

var check = "82567";
Convert.ToInt32(check[0]) //I get 56
Convert.ToInt32(check[0].ToString());// I get 8

有人能帮我理解这个吗?


5
两种说法都正确。check[0]是一个字符,它的整数值是它的ASCII码,字符串中的8就是8,所以返回8。 - BugFinder
1
这是预期的行为。 - Liam
2个回答

5

check[0] 是单个字符 -- 字符“8”。这意味着您调用了Convert.ToInt32(char) 重载方法,它返回一个32位有符号整数,该整数表示值参数的UTF-16编码代码单元。

'8' 的值为56。

check[0].ToString() 返回一个字符串,因此您调用Convert.ToInt32(string) 方法,该方法返回:

与 value 中的数字相当的32位有符号整数,如果 value 为 null,则返回 0 (零)。


3

这里没有问题。

你的第一个调用是 Convert.ToInt32(char),它只将 char 提升为 intcheck [0] 的值是一个 char,其值为56 - '8' 的 UTF-16 值。

你的第二个调用是 Convert.ToInt32(string),它将字符串解析为一个数字。字符串"8"被解析为值8。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接