0

我的任务是为 JAM 运行时环境转换用 C 编码的程序。我试图复制其中一种方法,但 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 的想法不同。为什么?

4

3 回答 3

2

你认为不正常的只是你所知道的局限

Convert.ToInt32(char)

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

Convert.ToInt32('1')

将返回 49。

然而

Convert.ToInt32("1")

将返回 1。

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

于 2013-07-26T18:06:43.290 回答
0

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

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

于 2013-07-26T18:06:18.017 回答
0

对 a 进行索引会string返回 a char。当你Convert.ToInt32在魅力上做所有事情时

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

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

只有当你处理strings 时,代码才会真正像你想要的那样进入整个Parse事情。

于 2013-07-26T18:06:29.933 回答