【问题标题】:Convert.ToInt32(string) giving wrong values [duplicate]Convert.ToInt32(string) 给出错误的值[重复]
【发布时间】:2022-12-17 10:00:42
【问题描述】:

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

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

有人可以帮我理解这个吗

【问题讨论】:

  • 两者都是对的。 check[0]是一个字符,int值是它的ascii码,字符串中的8就是8所以返回8
  • 这是预期的行为

标签: c#


【解决方案1】:

check[0] 是单个字符——字符“8”。这意味着您调用 Convert.ToInt32(char) 重载,它:

返回一个 32 位有符号整数,表示值参数的 UTF-16 编码代码单元

'8' 的值为 56。

check[0].ToString() 返回一个字符串,所以你调用 Convert.ToInt32(string),它返回:

一个 32 位有符号整数,等于 value 中的数字,如果 value 为 null,则为 0(零)

【讨论】:

    【解决方案2】:

    这里没有错。

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

    您的第二个电话是Convert.ToInt32(string),它将字符串解析为数字。字符串“8”被解析为值 8。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2012-01-19
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多