当我使用convert.toint32解析字符串时,我得到了奇怪的数字。
var check = "82567";
Convert.ToInt32(check[0]) //I get 56
Convert.ToInt32(check[0].ToString());// I get 8
有人能帮我理解这个吗?
当我使用convert.toint32解析字符串时,我得到了奇怪的数字。
var check = "82567";
Convert.ToInt32(check[0]) //I get 56
Convert.ToInt32(check[0].ToString());// I get 8
有人能帮我理解这个吗?
check[0]
是单个字符 -- 字符“8”。这意味着您调用了Convert.ToInt32(char)
重载方法,它返回一个32位有符号整数,该整数表示值参数的UTF-16编码代码单元。
'8'
的值为56。
check[0].ToString()
返回一个字符串,因此您调用Convert.ToInt32(string)
方法,该方法返回:
与 value 中的数字相当的32位有符号整数,如果 value 为 null,则返回 0 (零)。
这里没有问题。
你的第一个调用是 Convert.ToInt32(char)
,它只将 char
提升为 int
。 check [0]
的值是一个 char
,其值为56 - '8' 的 UTF-16 值。
你的第二个调用是 Convert.ToInt32(string)
,它将字符串解析为一个数字。字符串"8"被解析为值8。