この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Convert.ToInt32 メソッド (String, Int32)

 

指定した基数での数値の文字列形式を、等価の 32 ビット符号付き整数に変換します。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

public static int ToInt32(
	string value,
	int fromBase
)

パラメーター

value
Type: System.String

変換する数値を含んだ文字列。

fromBase
Type: System.Int32

value 内の数値の基数。これは 2、8、10、または 16 である必要があります。

戻り値

Type: System.Int32

value の数値と等価の 32 ビット符号付き整数。valuenull の場合は 0 (ゼロ)。

Exception Condition
ArgumentException

fromBase が 2、8、10、16 のどれでもありません。

-または-

value は非 10 進法符号付き数値を表しますが、前に負の符号が付いています。

ArgumentOutOfRangeException

valueString.Empty です。

FormatException

value に、fromBase で指定された進法では使用できない数字である文字が含まれています。 value 内の最初の文字が正しくない場合は、例外メッセージは、変換する数字がないことを示します。それ以外の場合は、このメッセージは、value に正しくない末尾文字が含まれていることを示します。

OverflowException

value は非 10 進法符号付き数値を表しますが、前に負の符号が付いています。

-または-

valueInt32.MinValue 未満の数値か、Int32.MaxValue より大きい数値を表します。

場合 fromBase 16 で指定した数を先頭に付加することができます、 value "0 x"または「0 X」を持つパラメーター。

ベース以外 10 の数値表現に負の符号がサポートされていないため、 ToInt32(String, Int32) メソッドは、負の数値が 2 の補数表現を使用することを想定しています。 つまり、このメソッドは常に、整数 (ビット 31) の最上位のバイナリ ビットを符号ビットとして解釈します。 範囲外のコード ベース以外の 10 では、番号を書き込みを行うことが結果として、 Int32 データ型に変換されます、 Int32 例外をスローするメソッドを使用しないで値。 次の例の増分値 Int32.MaxValue が 1 つ、結果として得られる数を 16 進数文字列形式に変換し、呼び出します、 ToInt32(String, Int32) メソッドです。 このメソッドが、メッセージを表示する例外をスローする代わりに「-2147483648 に 0x80000000 変換します」。

// Create a hexadecimal value out of range of the Integer type.
string value = Convert.ToString((long) int.MaxValue + 1, 16);
// Convert it back to a number.
try
{
   int number = Convert.ToInt32(value, 16);
   Console.WriteLine("0x{0} converts to {1}.", value, number.ToString());
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to an integer.", value);
}   

二項演算または数値の変換を実行する場合は、常にメソッドが特定の値を解釈する適切な数値表現を使用していることを確認する開発者の責任です。 次の例に示すように、16 進数の文字列形式に変換する前に、数値の符号を取得して、メソッドのハンドルが適切にオーバーフローを確認することができます。 例外をスロー元の値は正の値が整数値に戻すには、負の値が得られます。

// Create a hexadecimal value out of range of the Integer type.
long sourceNumber = (long) int.MaxValue + 1;
bool isNegative = Math.Sign(sourceNumber) == -1;
string value = Convert.ToString(sourceNumber, 16);
int targetNumber;
try
{
   targetNumber = Convert.ToInt32(value, 16);
   if (!(isNegative) & (targetNumber & 0x80000000) != 0) 
      throw new OverflowException();
   else 
      Console.WriteLine("0x{0} converts to {1}.", value, targetNumber);
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert '0x{0}' to an integer.", value);
} 
// Displays the following to the console:
//    Unable to convert '0x80000000' to an integer.    

Universal Windows Platform
8 から利用可能
.NET Framework
1.1 から利用可能
Portable Class Library
サポート対象 : portable .NET platforms
Silverlight
2.0 から利用可能
Windows Phone Silverlight
7.0 から利用可能
Windows Phone
8.1 から利用可能
トップに戻る
表示: