c# - 当我使用 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。为什么会这样?
解决方案
字符'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]);
推荐阅读
- swift - Swift UIView 不会隐藏图像
- javascript - 正则表达式允许用 | 分隔的 0-5 组数字列表(整数或十进制)
- html - 获取内联块元素以占用所有空白空间
- java - 如何在Java中创建一个带小数的方程?
- excel - 无法使用 epplus excel 包从 web api dot net core 2.1 获取 excel 文件
- javascript - 程序表单输入(使用正则表达式)仅接受十进制范围内的值(0.0-100),具有跨浏览器兼容性的单精度
- yii2 - Yii2 Codeception 功能测试 - 点击确认对话框的 OK 按钮
- php - 在 Woocommerce 中取消设置有条件的计费字段
- mysql - 用于分析的纯数据系统的 Aginity Workbench 标识符错误
- php - 第二种形式的 reCAPTCHA 提交不起作用