Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Convert.ToInt32 (String, Int32)

 

Data di pubblicazione: ottobre 2016

Converte la rappresentazione di stringa di un numero in una base specificata nell'intero con segno a 32 bit equivalente.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public static int ToInt32(
	string value,
	int fromBase
)

Parametri

value
Type: System.String

Stringa che contiene il numero da convertire.

fromBase
Type: System.Int32

Base del numero in value, che deve essere 2, 8, 10 o 16.

Valore restituito

Type: System.Int32

Intero con segno a 32 bit equivalente al numero in value oppure 0 (zero) se value è null.

Exception Condition
ArgumentException

Il valore di fromBase non è 2, 8, 10 o 16.

-oppure-

value, che rappresenta un numero con segno non in base 10, è preceduto da un segno negativo.

ArgumentOutOfRangeException

value è String.Empty.

FormatException

value contiene un carattere che corrisponde a una cifra non valida nella base specificata da fromBase. Il messaggio di eccezione indica che non ci sono cifre da convertire se il primo carattere in value non è valido; in caso contrario, il messaggio indica che value contiene caratteri finali non validi.

OverflowException

value, che rappresenta un numero con segno non in base 10, è preceduto da un segno negativo.

-oppure-

L'oggetto value rappresenta un numero minore di Int32.MinValue o maggiore di Int32.MaxValue.

Se fromBase è 16, è possibile anteporre al numero specificato per il value parametro con "0x" o "0x".

Poiché il segno negativo non è supportato per rappresentazioni numeriche non in base 10, il ToInt32(String, Int32) metodo presuppone che i numeri negativi utilizzano la rappresentazione in complemento a due. In altre parole, il metodo interpreta sempre il bit più significativo binario di un numero intero (bit 31) come bit di segno. Di conseguenza, è possibile scrivere codice in cui una non in base 10 del numero che non rientra nell'intervallo consentito di Int32 tipo di dati viene convertito in un Int32 valore senza il metodo generi un'eccezione. Gli incrementi di esempio seguenti Int32.MaxValue di uno, converte il numero risulta nella relativa rappresentazione di stringa esadecimale e quindi chiama il ToInt32(String, Int32) metodo. Anziché generare un'eccezione, il metodo visualizza il messaggio "0x80000000 viene convertito in -2147483648".

// 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);
}   

Quando si eseguono operazioni binarie o conversioni numeriche, è sempre responsabilità dello sviluppatore per verificare che un metodo viene utilizzata la rappresentazione numerica appropriata per interpretare un valore specifico. Come illustrato nell'esempio seguente, è possibile assicurarsi che il metodo gestisca gli overflow accuratamente recuperando innanzitutto il segno del valore numerico prima di convertirlo nella relativa rappresentazione di stringa esadecimale. Genera un'eccezione se il valore originale era positivo, ma la conversione in un intero produce un valore negativo.

// 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
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: