Convert.ToInt32给我异常的结果

时间:2013-07-26 17:57:36

标签: c# type-conversion

我的任务是转换用C编码的程序用于JAM运行时环境的项目。我试图复制其中一种方法,但C#正在用它做最奇怪的事情。让我告诉你。

我有三个字符串:

string box_fld_inp_lth = "001212912000003510112691610166010";
string box_fld_inp_lt_pos = "003345606900000251020215921651035510200";
string box_fld_inp_rt_pos = "004456688000000491920326429801950560200";

如果我有这样的int

Int32 x = 1;

然后我希望box_fld_inp_lth[x]等于0.对吗? 但是这句话Console.WriteLine(box_fld_inp_lth[x])评估为真 这一行Console.WriteLine(box_fld_inp_lth[x])带回零 所以不应该0 > 0返回false?

我相信我会发疯,因为Convert.ToInt32(box_fld_inp_lth[x])会返回48?

为什么会这样?我相信位置1的box_fld_inp_lth是零,但Convert.ToInt32的思路不同。为什么呢?

3 个答案:

答案 0 :(得分:1)

您认为异常只是您所知道的限制

Convert.ToInt32(char)

将返回该字符的ASCII值。例如

Convert.ToInt32('1')

将返回49。

,而

Convert.ToInt32("1")

将返回1.

这是它的实现方式,被认为是正常行为。

答案 1 :(得分:0)

  

我相信我会发疯,因为Convert.ToInt32(box_fld_inp_lth [x])会返回48?

box_fld_inp_lth[x]charConvert.ToInt32返回0的ascii代码。要获得整数值,请执行Convert.ToInt32(box_fld_inp_lth[x].ToString())

答案 2 :(得分:0)

索引到string会返回char。当你对魅力Convert.ToInt32进行所有操作时

[__DynamicallyInvokable]
public static int ToInt32(char value)
{
    return value;
}

换句话说,它只是给你字符后面的数值(有些人可能会说'ASCII'值)。

只有在您处理string时,代码才能真正进入您想要的整个Parse内容。