194

私はC#に文字を持っています:

char foo = '2';

今、私は2をintに入れたいと思います。Convert.ToInt32は、数値2ではなくcharの実際の10進値を返すことがわかりました。以下は機能します。

int bar = Convert.ToInt32(new string(foo, 1));

int.parseは文字列でも機能します。

文字列にせずにcharからintに移動するネイティブ関数はC#にありませんか?これは些細なことですが、直接変換を行うネイティブなものがないのは奇妙に思えます。

4

18 に答える 18

214

intこれはそれを:に変換します

char foo = '2';
int bar = foo - '0';

これは、各文字が内部的に数字で表されるために機能します。の文字'0'は連続した数字で表されるので、文字と'9'の違いを見つけると数字が2になります。'0''2'

于 2008-10-27T04:51:26.540 に答える
188

興味深い答えですが、ドキュメントは別の言い方をしています:

メソッドを使用して、数値を表すオブジェクトを数値型GetNumericValueに変換します。とをChar使用 して、文字列内の文字を オブジェクトに変換します。 オブジェクトをオブジェクトに変換するために使用します。ParseTryParseCharToStringCharString

http://msdn.microsoft.com/en-us/library/system.char.aspx

于 2009-04-28T02:20:19.333 に答える
98

誰もがこのような使用int.Parse()を検討していますかint.TryParse()

int bar = int.Parse(foo.ToString());

このようにさらに良い

int bar;
if (!int.TryParse(foo.ToString(), out bar))
{
    //Do something to correct the problem
}

はるかに安全でエラーが発生しにくい

于 2008-10-27T05:39:56.987 に答える
28
char c = '1';
int i = (int)(c - '0');

そして、それから静的メソッドを作成できます。

static int ToInt(this char c)
{
    return (int)(c - '0');
}
于 2008-10-27T04:52:06.320 に答える
16

これを試して

char x = '9'; // '9' = ASCII 57

int b = x - '0'; //That is '9' - '0' = 57 - 48 = 9
于 2011-12-30T07:03:56.050 に答える
9

デフォルトではUNICODEを使用するため、faultyの方法を使用することをお勧めします

int bar = int.Parse(foo.ToString());

下の数値は数字と基本的なラテン文字で同じですが。

于 2012-10-26T06:59:21.217 に答える
8

これは整数に変換され、ユニコードを処理します

CharUnicodeInfo.GetDecimalDigitValue('2')

詳しくはこちらをご覧ください

于 2015-04-18T02:32:38.250 に答える
2

Compact Framework 3.5 を使用していますが、「char.Parse」メソッドがありません。Convert クラスを使うのも悪くないと思います。(C# による CLR、Jeffrey Richter を参照)

char letterA = Convert.ToChar(65);
Console.WriteLine(letterA);
letterA = 'あ';
ushort valueA = Convert.ToUInt16(letterA);
Console.WriteLine(valueA);
char japaneseA = Convert.ToChar(valueA);
Console.WriteLine(japaneseA);

ASCII char または Unicode char で動作します

于 2015-08-13T06:42:52.580 に答える
-1

これは私のために働いた:

int bar = int.Parse("" + foo);
于 2013-08-26T02:07:29.473 に答える