我的任务是转换用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的思路不同。为什么呢?
答案 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]
是char
,Convert.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
内容。