2
static void Main(string[] args)
{
    string str_val = "8584348,894";
    //int prefix = Convert.ToInt32(str_val[0]); //prefix = 56 O_o
    //int prefix = (int)str_val[0]; //what, again 56? i need 8!
    int prefix = Convert.ToInt32("8"); //at least this works -_-
}

最初の記号を正しい数値に変換する方法はありますか?

4

5 に答える 5

11

使用する場合:

Convert.ToInt32(str_val[0]);

次に、実際にオーバーロードを呼び出しています。

Convert.ToInt32(char val);

これは、パラメーターとして渡される文字の Unicode/Ascii 番号を示します。

最初の文字を変換する場合は、強制的に文字列型にする必要があります。

Convert.ToInt32(str_val.Substring(0, 1));

このようにして、オーバーロードを呼び出します。

Convert.ToInt32(string val);

これは実際に必要なことを行います(文字列値をこの文字列が表す int 値に変換します)。

于 2012-07-26T13:17:32.400 に答える
3

文字列を解析しようとしていますが、文字を渡しています。最初に文字を文字列に変換します。

int prefix = Convert.ToInt32(str_val[0].ToString());

したがって、文字値 8 は ASCII 値 56 です。目的は、値を ASCII 値ではなく文字列として解釈することです。.ToString() メソッドを使用することで、文字をヌルで終了する文字列に変換します。この文字列は、ToInt32 メソッドで読み取ることができます。

于 2012-07-26T13:17:10.697 に答える
2

このようConvert.ToInt32(str_val[0])にして、char を int に変換する文字列のインデックスで文字を読み取ります。int はそれのアスキーです

于 2012-07-26T13:16:46.983 に答える
1
Int32.Parse(str_val[0])

番号を文字列で表示します。

于 2012-07-26T13:48:39.760 に答える
1

Bridge が述べたように、ASCII 値を取得しています。文字列クラスでインデクサーを使用して文字を取得すると、文字として返されます。charのドキュメントを読むと、UTF-16 の数値として内部的に格納されていることがわかります。また、UTF-16 値を抽出するか、数値形式を文字形式に変換する、ほとんどの数値型との間の暗黙的な変換も行います。それがあなたがしていることです。

あなたがしようとしていることは、UTF-16 値の数値表現を取得するのではなく、int として解析することです。それがConvertの答えのすべての出番です。

于 2012-07-26T13:20:45.593 に答える