首页 > 解决方案 > 当我使用 split.string 和 Convert.ToInt32 时,值会发生变化,为什么?

问题描述

例如,

string a = "4,3,2";
a.Split(',');
int one = Convert.ToInt32(a[0]);
int two = Convert.ToInt32(a[2]);

如果我要 Console.WriteLine(a[0]); 它会给我 4,Console.WriteLine(a[2]) 会给我 2。但是,Console.WriteLine(one) 和 Console.WriteLine(two) 分别给我 52 和 50。为什么会这样?

标签: c#

解决方案


字符'4'是 unicode 代码点 52 和字符'3'unicode 代码点 51。您正在转换字符而不是字符串。问题是您忽略了 a.Split(',');, 然后取消引用单个字符的结果a,并且Convert.ToInt32(char)确实:

将指定 Unicode 字符的值转换为等效的 32 位有符号整数。

ToInt32(Char) 方法返回一个 32 位有符号整数,表示 value 参数的 UTF-16 编码代码单元。

而是在拆分后使用字符串:

string[] split = a.Split(',');
int one = Convert.ToInt32(split[0]);
int two = Convert.ToInt32(split[1]);

推荐阅读