Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Método Convert.ToInt32 (String, Int32)

 

Publicado: agosto de 2016

System_CAPS_noteObservação

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Converte a representação de cadeia de caracteres de um número em uma base especificada para um inteiro com sinal de 32 bits equivalente.

Namespace:   System
Assembly:  mscorlib (em mscorlib.dll)

public static int ToInt32(
	string value,
	int fromBase
)

Parâmetros

value
Type: System.String

Uma cadeia de caracteres que contém o número a ser convertido.

fromBase
Type: System.Int32

A base do número em value, que deve ser 2, 8, 10 ou 16.

Valor Retornado

Type: System.Int32

Um inteiro com sinal de 32 bits equivalente ao número em value, ou 0 (zero), se value for null.

Exception Condition
ArgumentException

fromBase não é 2, 8, 10 ou 16.

-ou-

value, que representa um número assinado de base não 10, é prefixado com um sinal negativo.

ArgumentOutOfRangeException

value é String.Empty.

FormatException

value contém um caractere que não é um dígito válido na base especificada por fromBase. A mensagem de exceção indica que não há dígitos a serem convertidos caso o primeiro caractere em value seja inválido; do contrário, a mensagem indica que value contém caracteres à direita inválidos.

OverflowException

value, que representa um número assinado de base não 10, é prefixado com um sinal negativo.

-ou-

value representa um número que é menor que Int32.MinValue ou maior que Int32.MaxValue.

Caso fromBase seja 16, é possível prefixar o número especificado pelo parâmetro value com "0x" ou "0X".

Porque não é compatível com o sinal negativo não base 10 representações de numéricas, o ToInt32(String, Int32) método pressupõe que os números negativos usam representação de complemento de dois. Em outras palavras, o método sempre interpreta o bit de ordem mais alta binário de um inteiro (31 bits) como o bit de sinal. Como resultado, é possível gravar o código no qual um 10 de base não número que está fora do intervalo de Int32 tipo de dados é convertido em um Int32 valor sem o método lançar uma exceção. A seguir incrementa exemplo Int32.MaxValue por um, converte o número resultante em sua representação de cadeia de caracteres hexadecimal e, em seguida, chama o ToInt32(String, Int32) método. Em vez de gerar uma exceção, o método exibe a mensagem "0x80000000 converte -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);
}   

Durante a realização de operações binárias ou conversões numéricas, sempre é responsabilidade do desenvolvedor verificar se um método está usando a representação numérica apropriada para interpretar um valor específico. Como mostra o exemplo a seguir, você pode garantir que os identificadores de método estoura adequadamente primeiro recuperando o sinal do valor numérico antes de convertê-la em sua representação de cadeia de caracteres hexadecimal. Lançar uma exceção se o valor original era positivo, mas a conversão de volta para um número inteiro produz um valor 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.    

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1
Retornar ao início
Mostrar: