0

私は、C でコーディングされたプログラムを JAM ランタイム環境用に変換するプロジェクトを任されています。メソッドの 1 つをコピーしようとしていますが、C# は最も奇妙なことを行っています。披露させて。

私は3つの文字列を持っています:

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])は true と評価されます。
この行Console.WriteLine(box_fld_inp_lth[x])はゼロを返します。では、 false を返す
べきではありませんか?0 > 0

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]は で、のアスキー コードcharConvert.ToInt32返します0。整数値を取得するにはConvert.ToInt32(box_fld_inp_lth[x].ToString())

于 2013-07-26T18:06:18.017 に答える
0

へのインデックス付けは、 をstring返しますchar。あなたがConvert.ToInt32チャームをするとき、それはすべてをします

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

つまり、文字の数値 (「ASCII」値と言う人もいます) を返すだけです。

sを扱っている場合にのみstring、コードは本当にParseあなたが望むように全体に入ります。

于 2013-07-26T18:06:29.933 に答える