BigInteger.Parse Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Convierte la representación en forma de cadena de un número en su BigInteger equivalente.
Sobrecargas
Parse(String) |
Convierte la representación en forma de cadena de un número en su BigInteger equivalente. |
Parse(ReadOnlySpan<Char>, IFormatProvider) |
Analiza un intervalo de caracteres en un valor. |
Parse(String, NumberStyles) |
Convierte la representación de cadena de un número con un estilo especificado en su BigInteger equivalente. |
Parse(String, IFormatProvider) |
Convierte la representación en forma de cadena de un número con el formato específico de la referencia cultural indicada en su BigInteger equivalente. |
Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) |
Convierte la representación de un número, incluida en el intervalo de solo lectura especificado de caracteres, en un estilo especificado en su equivalente BigInteger. |
Parse(String, NumberStyles, IFormatProvider) |
Convierte la representación de cadena de un número con el estilo y el formato específico de la referencia cultural que se hayan especificado en su equivalente de BigInteger. |
Parse(String)
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
Convierte la representación en forma de cadena de un número en su BigInteger equivalente.
public:
static System::Numerics::BigInteger Parse(System::String ^ value);
public static System.Numerics.BigInteger Parse (string value);
static member Parse : string -> System.Numerics.BigInteger
Public Shared Function Parse (value As String) As BigInteger
Parámetros
- value
- String
Cadena que contiene el número que se va a convertir.
Devoluciones
Valor equivalente al número especificado en el parámetro value
.
Excepciones
value
es null
.
value
no tiene el formato correcto.
Ejemplos
En el ejemplo siguiente se usa el Parse(String) método para crear instancias de dos BigInteger objetos. Multiplica cada objeto por otro número y, a continuación, llama al Compare método para determinar la relación entre los dos valores.
string stringToParse = String.Empty;
try
{
// Parse two strings.
string string1, string2;
string1 = "12347534159895123";
string2 = "987654321357159852";
stringToParse = string1;
BigInteger number1 = BigInteger.Parse(stringToParse);
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1);
stringToParse = string2;
BigInteger number2 = BigInteger.Parse(stringToParse);
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2);
// Perform arithmetic operations on the two numbers.
number1 *= 3;
number2 *= 2;
// Compare the numbers.
int result = BigInteger.Compare(number1, number2);
switch (result)
{
case -1:
Console.WriteLine("{0} is greater than {1}.", number2, number1);
break;
case 0:
Console.WriteLine("{0} is equal to {1}.", number1, number2);
break;
case 1:
Console.WriteLine("{0} is greater than {1}.", number1, number2);
break;
}
}
catch (FormatException)
{
Console.WriteLine("Unable to parse {0}.", stringToParse);
}
// The example displays the following output:
// Converted '12347534159895123' to 12,347,534,159,895,123.
// Converted '987654321357159852' to 987,654,321,357,159,852.
// 1975308642714319704 is greater than 37042602479685369.
let mutable stringToParse = ""
try
// Parse two strings.
let string1 = "12347534159895123"
let string2 = "987654321357159852"
stringToParse <- string1
let number1 = BigInteger.Parse stringToParse
printfn $"Converted '{stringToParse}' to {number1:N0}."
stringToParse <- string2
let number2 = BigInteger.Parse stringToParse
printfn $"Converted '{stringToParse}' to {number2:N0}."
// Perform arithmetic operations on the two numbers.
let number1 = number1 * bigint 3
let number2 = number2 * bigint 2
// Compare the numbers.
let result = BigInteger.Compare(number1, number2)
match result with
| -1 -> printfn $"{number2:N0} is greater than {number1:N0}."
| 0 -> printfn $"{number1:N0} is equal to {number2:N0}."
| 1
| _ -> printfn $"{number1:N0} is greater than {number2:N0}."
with :? FormatException ->
printfn $"Unable to parse {stringToParse}."
// The example displays the following output:
// Converted '12347534159895123' to 12,347,534,159,895,123.
// Converted '987654321357159852' to 987,654,321,357,159,852.
// 1975308642714319704 is greater than 37042602479685369.
Dim stringToParse As String = String.Empty
Try
' Parse two strings.
Dim string1, string2 As String
string1 = "12347534159895123"
string2 = "987654321357159852"
stringToParse = string1
Dim number1 As BigInteger = BigInteger.Parse(stringToParse)
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1)
stringToParse = string2
Dim number2 As BigInteger = BigInteger.Parse(stringToParse)
Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2)
' Perform arithmetic operations on the two numbers.
number1 *= 3
number2 *= 2
' Compare the numbers.
Select Case BigInteger.Compare(number1, number2)
Case -1
Console.WriteLine("{0} is greater than {1}.", number2, number1)
Case 0
Console.WriteLine("{0} is equal to {1}.", number1, number2)
Case 1
Console.WriteLine("{0} is greater than {1}.", number1, number2)
End Select
Catch e As FormatException
Console.WriteLine("Unable to parse {0}.", stringToParse)
End Try
' The example displays the following output:
' Converted '12347534159895123' to 12,347,534,159,895,123.
' Converted '987654321357159852' to 987,654,321,357,159,852.
' 1975308642714319704 is greater than 37042602479685369.
Comentarios
El value
parámetro debe ser la representación de cadena de un número en el formato siguiente.
[ws] [sign] digits[ws]
Los elementos de los corchetes ([ y ]) son opcionales. En esta tabla se describe cada elemento.
Elemento | Descripción |
---|---|
ws | Espacio en blanco opcional. |
sign | Un signo opcional. Los caracteres de signo válidos se determinan mediante las NumberFormatInfo.NegativeSign propiedades y NumberFormatInfo.PositiveSign de la referencia cultural actual. |
dígitos | Secuencia de dígitos comprendidos entre 0 y 9. Se omiten los ceros iniciales. |
Nota
La cadena especificada por el value
parámetro se interpreta mediante el NumberStyles.Integer estilo . No puede contener separadores de grupo ni separadores decimales y no puede tener una parte decimal.
El value
parámetro se analiza mediante la información de formato de un System.Globalization.NumberFormatInfo objeto que se inicializa para la referencia cultural del sistema actual. Para obtener más información, vea NumberFormatInfo.CurrentInfo. Para analizar una cadena mediante la información de formato de una referencia cultural específica, use el Parse(String, IFormatProvider) método .
Importante
Si usa el Parse método para realizar un recorrido de ida y vuelta la representación de cadena de un BigInteger valor generado por el ToString método , debe usar el BigInteger.ToString(String) método con el especificador de formato "R" para generar la representación de cadena del BigInteger valor. De lo contrario, la representación de cadena de BigInteger conserva solo los 50 dígitos más significativos del valor original y los datos se pueden perder cuando se usa el Parse método para restaurar el BigInteger valor.
Consulte también
Se aplica a
Parse(ReadOnlySpan<Char>, IFormatProvider)
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
Analiza un intervalo de caracteres en un valor.
public:
static System::Numerics::BigInteger Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As BigInteger
Parámetros
- s
- ReadOnlySpan<Char>
Intervalo de caracteres que se van a analizar.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre s
.
Devoluciones
Resultado del análisis s
de .
Implementaciones
Se aplica a
Parse(String, NumberStyles)
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
Convierte la representación de cadena de un número con un estilo especificado en su BigInteger equivalente.
public:
static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style);
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style);
static member Parse : string * System.Globalization.NumberStyles -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles) As BigInteger
Parámetros
- value
- String
Cadena que contiene un número que se va a convertir.
- style
- NumberStyles
Combinación bit a bit de los valores de enumeración que especifican el formato permitido de value
.
Devoluciones
Valor equivalente al número especificado en el parámetro value
.
Excepciones
style
no es un valor NumberStyles.
o bien
style
incluye la marca AllowHexSpecifier o HexNumber junto con otro valor.
value
es null
.
value
no cumple el modelo de entrada especificado por NumberStyles.
Ejemplos
En el ejemplo siguiente se muestran las llamadas al Parse(String, NumberStyles) método con varios valores posibles para el style
parámetro . Muestra cómo interpretar una cadena como un valor hexadecimal y cómo no permitir espacios y firmar símbolos.
BigInteger number;
// Method should succeed (white space and sign allowed)
number = BigInteger.Parse(" -68054 ", NumberStyles.Integer);
Console.WriteLine(number);
// Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier);
Console.WriteLine(number);
// Method call should fail: sign not allowed
try
{
number = BigInteger.Parse(" -68054 ", NumberStyles.AllowLeadingWhite
| NumberStyles.AllowTrailingWhite);
Console.WriteLine(number);
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
// Method call should fail: white space not allowed
try
{
number = BigInteger.Parse(" 68054 ", NumberStyles.AllowLeadingSign);
Console.WriteLine(number);
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
//
// The method produces the following output:
//
// -68054
// 426068
// Input string was not in a correct format.
// Input string was not in a correct format.
let number = BigInteger.Parse(" -68054 ", NumberStyles.Integer)
printfn $"{number}"
let number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier)
printfn $"{number}"
try
let number =
BigInteger.Parse(" -68054 ", NumberStyles.AllowLeadingWhite ||| NumberStyles.AllowTrailingWhite)
printfn $"{number}"
with :? FormatException as e ->
printfn $"{e.Message}"
try
let number = BigInteger.Parse(" 68054 ", NumberStyles.AllowLeadingSign)
printfn $"{number}"
with :? FormatException as e ->
printfn $"{e.Message}"
// The method produces the following output:
// -68054
// 426068
// Input string was not in a correct format.
// Input string was not in a correct format.
Dim number As BigInteger
' Method should succeed (white space and sign allowed)
number = BigInteger.Parse(" -68054 ", NumberStyles.Integer)
Console.WriteLine(number)
' Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier)
Console.WriteLine(number)
' Method call should fail: sign not allowed
Try
number = BigInteger.Parse(" -68054 ", NumberStyles.AllowLeadingWhite _
Or NumberStyles.AllowTrailingWhite)
Console.WriteLine(number)
Catch e As FormatException
Console.WriteLine(e.Message)
End Try
' Method call should fail: white space not allowed
Try
number = BigInteger.Parse(" 68054 ", NumberStyles.AllowLeadingSign)
Console.WriteLine(number)
Catch e As FormatException
Console.WriteLine(e.Message)
End Try
'
' The method produces the following output:
'
' -68054
' 426068
' Input string was not in a correct format.
' Input string was not in a correct format.
Comentarios
El style
parámetro define los elementos de estilo (como el espacio en blanco, el símbolo de signo positivo o negativo, el símbolo separador de grupo o el símbolo de separador decimal) que se permiten en el value
parámetro para que la operación de análisis se realice correctamente.
styles
debe ser una combinación de marcas de bits de la NumberStyles enumeración . El style
parámetro hace que esta sobrecarga de método sea útil cuando value
contiene la representación de cadena de un valor hexadecimal, cuando el sistema numérico (decimal o hexadecimal) representado por value
solo se conoce en tiempo de ejecución, o cuando se desea denegar el espacio en blanco o un símbolo de signo en value
.
Según el valor de style
, el value
parámetro puede incluir los siguientes elementos:
[ws] [$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
Si style
incluye NumberStyles.AllowHexSpecifier, el value
parámetro puede contener los siguientes elementos:
[ws] hexdigits[ws]
Los elementos de los corchetes ([ y ]) son opcionales. En esta tabla se describe cada elemento.
Elemento | Descripción |
---|---|
ws | Espacio en blanco opcional. El espacio en blanco puede aparecer al principio de value si incluye la NumberStyles.AllowLeadingWhite marca y puede aparecer al final de value si style incluye la NumberStyles.AllowTrailingWhitestyle marca. |
$ | Símbolo de moneda específico de la referencia cultural. Su posición en la cadena se define mediante las NumberFormatInfo.CurrencyNegativePattern propiedades y NumberFormatInfo.CurrencyPositivePattern de la referencia cultural actual. El símbolo de moneda de la referencia cultural actual puede aparecer en value si style incluye la NumberStyles.AllowCurrencySymbol marca . |
sign | Un signo opcional. El signo puede aparecer al principio de value si incluye la NumberStyles.AllowLeadingSign marca y puede aparecer al final de value si style incluye la NumberStyles.AllowTrailingSignstyle marca . Los paréntesis se pueden usar en value para indicar un valor negativo si style incluye la NumberStyles.AllowParentheses marca . |
dígitos fractional_digits exponential_digits |
Secuencia de dígitos de 0 a 9. Para fractional_digits, solo el dígito 0 es válido. |
, | Símbolo separador de grupo específico de la referencia cultural. El separador de grupo de la referencia cultural actual puede aparecer en value si style incluye la NumberStyles.AllowThousands marca . |
. | Símbolo de separador decimal específico de la referencia cultural. El símbolo decimal de la referencia cultural actual puede aparecer en value si style incluye la NumberStyles.AllowDecimalPoint marca . Solo el dígito 0 puede aparecer como un dígito fraccionario para que la operación de análisis se realice correctamente; si fractional_digits incluye cualquier otro dígito, se produce una FormatException excepción . |
E | Carácter "e" o "E", que indica que el valor se representa en notación exponencial (científica). El value parámetro puede representar un número en notación exponencial si style incluye la NumberStyles.AllowExponent marca . |
hexdigits | Secuencia de dígitos hexadecimales de 0 a f, o de 0 a F. |
Nota
La operación de análisis omite los caracteres NUL (U+0000) terminados, s
independientemente del valor del style
argumento.
Una cadena con dígitos solo (que corresponde al NumberStyles.None estilo) siempre analiza correctamente. La mayoría de los miembros restantes NumberStyles controlan los elementos que pueden estar presentes, pero no son necesarios para estar presentes, en la cadena de entrada. En la tabla siguiente se indica cómo afectan los miembros individuales NumberStyles a los elementos que pueden estar presentes en value
.
Valor de NumberStyles |
Elementos permitidos además value de dígitos |
---|---|
None | Solo el elemento digits . |
AllowDecimalPoint | Los elementos decimal point (.) y fractional-digits . |
AllowExponent | Carácter "e" o "E", que indica la notación exponencial, junto con exponential_digits. |
AllowLeadingWhite | Elemento ws al principio de value . |
AllowTrailingWhite | Elemento ws al final de value . |
AllowLeadingSign | Elemento de signo al principio de value . |
AllowTrailingSign | Elemento de signo al final de value . |
AllowParentheses | Elemento de signo en forma de paréntesis que incluye el valor numérico. |
AllowThousands | Elemento separador de grupo (,). |
AllowCurrencySymbol | Elemento currency ($). |
Currency | Todos los elementos. Sin embargo, value no puede representar un número hexadecimal o un número en notación exponencial. |
Float | El elemento ws al principio o al final de value , firma al principio de value y el símbolo decimal (.). El value parámetro también puede usar la notación exponencial. |
Number | Elementos ws separadores de sign grupo (,) y separadores decimales (.). |
Any | Todos los elementos. Sin embargo, value no puede representar un número hexadecimal. |
Importante
Si usa el Parse método para realizar un recorrido de ida y vuelta la representación de cadena de un BigInteger valor generado por el ToString método , debe usar el BigInteger.ToString(String) método con el especificador de formato "R" para generar la representación de cadena del BigInteger valor. De lo contrario, la representación de cadena de BigInteger conserva solo los 50 dígitos más significativos del valor original y los datos se pueden perder cuando se usa el Parse método para restaurar el BigInteger valor.
A diferencia de los demás NumberStyles valores, que permiten, pero no requieren, la presencia de elementos de estilo concretos en value
, el NumberStyles.AllowHexSpecifier valor de estilo significa que los caracteres numéricos individuales de value
siempre se interpretan como caracteres hexadecimales. Los caracteres hexadecimales válidos son 0-9, A-F y a-f. Las únicas marcas que se pueden combinar con el style
parámetro son NumberStyles.AllowLeadingWhite y NumberStyles.AllowTrailingWhite. (La NumberStyles enumeración incluye un estilo de número compuesto, HexNumber, que incluye ambas marcas de espacio en blanco).
Nota
Si value
es la representación de cadena de un número hexadecimal, no puede ir precedida de ninguna decoración (como 0x
o &h
) que la diferencie como un número hexadecimal. Esto hace que se produzca un error en la conversión.
Si value
es una cadena hexadecimal, el Parse(String, NumberStyles) método interpreta value
como un número negativo almacenado mediante la representación complementaria de dos si sus dos primeros dígitos hexadecimales son mayores o iguales que 0x80
. En otras palabras, el método interpreta el bit de orden más alto del primer byte de value
como bit de signo. Para asegurarse de que una cadena hexadecimal se interpreta correctamente como un número positivo, el primer dígito de value
debe tener un valor de cero. Por ejemplo, el método interpreta 0x80
como un valor negativo, pero interpreta o 0x080
0x0080
como un valor positivo. En el ejemplo siguiente se muestra la diferencia entre las cadenas hexadecimales que representan valores negativos y positivos.
using System;
using System.Globalization;
using System.Numerics;
public class Example
{
public static void Main()
{
string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
foreach (string hexString in hexStrings)
{
BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
}
}
}
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
open System.Globalization
open System.Numerics
let hexStrings =
[| "80"
"E293"
"F9A2FF"
"FFFFFFFF"
"080"
"0E293"
"0F9A2FF"
"0FFFFFFFF"
"0080"
"00E293"
"00F9A2FF"
"00FFFFFFFF" |]
for hexString in hexStrings do
let number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
printfn $"Converted 0x{hexString} to {number:N0}."
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics
Module Example
Public Sub Main()
Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
For Each hexString As String In hexStrings
Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
Next
End Sub
End Module
' The example displays the following output:
' Converted 0x80 to -128.
' Converted 0xE293 to -7533.
' Converted 0xF9A2FF to -417025.
' Converted 0xFFFFFFFF to -1.
' Converted 0x080 to 128.
' Converted 0x0E293 to 58003.
' Converted 0x0F9A2FF to 16360191.
' Converted 0x0FFFFFFFF to 4294967295.
' Converted 0x0080 to 128.
' Converted 0x00E293 to 58003.
' Converted 0x00F9A2FF to 16360191.
' Converted 0x00FFFFFFFF to 4294967295.
El value
parámetro se analiza mediante la información de formato de un NumberFormatInfo objeto que se inicializa para la referencia cultural del sistema actual. Para especificar la referencia cultural cuya información de formato se usa para la operación de análisis, llame a la Parse(String, NumberStyles, IFormatProvider) sobrecarga.
Consulte también
Se aplica a
Parse(String, IFormatProvider)
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
Convierte la representación en forma de cadena de un número con el formato específico de la referencia cultural indicada en su BigInteger equivalente.
public:
static System::Numerics::BigInteger Parse(System::String ^ value, IFormatProvider ^ provider);
public:
static System::Numerics::BigInteger Parse(System::String ^ value, IFormatProvider ^ provider) = IParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse (string value, IFormatProvider provider);
public static System.Numerics.BigInteger Parse (string value, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, provider As IFormatProvider) As BigInteger
Parámetros
- value
- String
Cadena que contiene un número que se va a convertir.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre value
.
Devoluciones
Valor equivalente al número especificado en el parámetro value
.
Implementaciones
Excepciones
value
es null
.
value
no tiene el formato correcto.
Ejemplos
En los ejemplos siguientes se muestran dos maneras de definir la tilde (~) como un signo negativo para los valores de formato BigInteger . Tenga en cuenta que para mostrar los BigInteger valores en el mismo formato que las cadenas originales, el código debe llamar al BigInteger.ToString(IFormatProvider) método y pasarlo al NumberFormatInfo objeto que proporciona información de formato.
En el primer ejemplo se define una clase que implementa IFormatProvider y usa el GetFormat método para devolver el NumberFormatInfo objeto que proporciona información de formato.
public class BigIntegerFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(NumberFormatInfo))
{
NumberFormatInfo numberFormat = new NumberFormatInfo();
numberFormat.NegativeSign = "~";
return numberFormat;
}
else
{
return null;
}
}
}
type BigIntegerFormatProvider() =
interface IFormatProvider with
member _.GetFormat(formatType: Type) =
if formatType = typeof<NumberFormatInfo> then
let numberFormat = NumberFormatInfo()
numberFormat.NegativeSign <- "~"
numberFormat
else
null
Public Class BigIntegerFormatProvider : Implements IFormatProvider
Public Function GetFormat(formatType As Type) As Object _
Implements IFormatProvider.GetFormat
If formatType Is GetType(NumberFormatInfo) Then
Dim numberFormat As New NumberFormatInfo
numberFormat.NegativeSign = "~"
Return numberFormat
Else
Return Nothing
End If
End Function
End Class
A continuación, se puede crear una instancia de un BigInteger objeto con el código siguiente:
BigInteger number = BigInteger.Parse("~6354129876", new BigIntegerFormatProvider());
// Display value using same formatting information
Console.WriteLine(number.ToString(new BigIntegerFormatProvider()));
// Display value using formatting of current culture
Console.WriteLine(number);
let number = BigInteger.Parse("~6354129876", BigIntegerFormatProvider())
printfn $"{number.ToString(BigIntegerFormatProvider())}"
printfn $"{number}"
Dim number As BigInteger = BigInteger.Parse("~6354129876", New BigIntegerFormatProvider)
' Display value using same formatting information
Console.WriteLine(number.ToString(New BigIntegerFormatProvider))
' Display value using formatting of current culture
Console.WriteLine(number)
El segundo ejemplo es más sencillo. Pasa el NumberFormatInfo objeto que proporciona información de formato al provider
parámetro .
NumberFormatInfo fmt = new NumberFormatInfo();
fmt.NegativeSign = "~";
BigInteger number = BigInteger.Parse("~6354129876", fmt);
// Display value using same formatting information
Console.WriteLine(number.ToString(fmt));
// Display value using formatting of current culture
Console.WriteLine(number);
let fmt = NumberFormatInfo()
fmt.NegativeSign <- "~"
let number = BigInteger.Parse("~6354129876", fmt)
printfn $"{number.ToString fmt}"
printfn $"{number}"
Dim fmt As New NumberFormatInfo()
fmt.NegativeSign = "~"
Dim number As BigInteger = BigInteger.Parse("~6354129876", fmt)
' Display value using same formatting information
Console.WriteLine(number.ToString(fmt))
' Display value using formatting of current culture
Console.WriteLine(number)
Comentarios
El value
parámetro debe ser la representación de cadena de un número de la forma siguiente:
[ws] [sign] digits[ws]
Los elementos de los corchetes ([ y ]) son opcionales. En esta tabla se describe cada elemento.
Elemento | Descripción |
---|---|
ws | Espacio en blanco opcional. |
sign | Un signo opcional. Los caracteres de signo válidos se determinan mediante las NumberFormatInfo.NegativeSign propiedades y NumberFormatInfo.PositiveSign del NumberFormatInfo objeto devuelto por el provider método del GetFormat objeto. |
dígitos | Secuencia de dígitos comprendidos entre 0 y 9. Se omiten los ceros iniciales. |
Nota
La cadena especificada por el value
parámetro se interpreta mediante el NumberStyles.Integer estilo . No puede contener separadores de grupo ni separadores decimales y no puede tener una parte decimal.
Importante
Si usa el Parse método para realizar un recorrido de ida y vuelta la representación de cadena de un BigInteger valor generado por el ToString método , debe usar el BigInteger.ToString(String) método con el especificador de formato "R" para generar la representación de cadena del BigInteger valor. De lo contrario, la representación de cadena de BigInteger conserva solo los 50 dígitos más significativos del valor original y los datos se pueden perder cuando se usa el Parse método para restaurar el BigInteger valor.
El provider
parámetro es una IFormatProvider implementación cuyo GetFormat método devuelve un NumberFormatInfo objeto que proporciona información de formato específica de la referencia cultural. Cuando se invoca el Parse(String, IFormatProvider) método , llama al provider
método del GetFormat parámetro y lo pasa un Type objeto que representa el NumberFormatInfo tipo. A GetFormat continuación, el método devuelve el NumberFormatInfo objeto que proporciona información sobre el formato del value
parámetro . Hay tres maneras de usar el provider
parámetro para proporcionar información de formato personalizada a la operación de análisis:
Puede pasar un CultureInfo objeto que representa la referencia cultural que proporciona información de formato. Su GetFormat método devuelve el NumberFormatInfo objeto que proporciona información de formato numérico para esa referencia cultural.
Puede pasar el objeto real NumberFormatInfo que proporciona información de formato numérico. (Su implementación de GetFormat solo devuelve a sí mismo).
Puede pasar un objeto personalizado que implemente IFormatProvider. Su GetFormat método crea una instancia de y devuelve el NumberFormatInfo objeto que proporciona información de formato.
Si provider
es null
, el formato de value
se interpreta en función del NumberFormatInfo objeto de la referencia cultural actual.
Consulte también
Se aplica a
Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
Convierte la representación de un número, incluida en el intervalo de solo lectura especificado de caracteres, en un estilo especificado en su equivalente BigInteger.
public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider provider = default);
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As ReadOnlySpan(Of Char), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As BigInteger
Parámetros
- value
- ReadOnlySpan<Char>
Intervalo de solo lectura de caracteres que contiene el número que se va a convertir.
- style
- NumberStyles
Combinación bit a bit de los valores de enumeración que especifican el formato permitido de value
.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre value
.
Devoluciones
Valor equivalente al número especificado en el parámetro value
.
Implementaciones
Excepciones
style
no es un valor NumberStyles.
o bien
style
incluye la marca AllowHexSpecifier o HexNumber junto con otro valor.
value
es null
.
value
no cumple el modelo de entrada especificado por style
.
Comentarios
El style
parámetro define los elementos de estilo (como el espacio en blanco, el símbolo de signo positivo o negativo, el símbolo separador de grupo o el símbolo de separador decimal) que se permiten en el value
parámetro para que la operación de análisis se realice correctamente.
styles
debe ser una combinación de marcas de bits de la NumberStyles enumeración . El style
parámetro hace que esta sobrecarga de método sea útil cuando value
contiene la representación de un valor hexadecimal, cuando el sistema numérico (decimal o hexadecimal) representado por value
solo se conoce en tiempo de ejecución, o cuando se desea denegar el espacio en blanco o un símbolo de signo en value
.
Según el valor de style
, el value
parámetro puede incluir los siguientes elementos:
[ws] [$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
Si style
incluye NumberStyles.AllowHexSpecifier, el value
parámetro puede incluir los siguientes elementos:
[ws] hexdigits[ws]
Los elementos de los corchetes ([ y ]) son opcionales. En esta tabla se describe cada elemento.
Elemento | Descripción |
---|---|
ws | Espacio en blanco opcional. El espacio en blanco puede aparecer al principio de value si incluye la NumberStyles.AllowLeadingWhite marca y puede aparecer al final de value si style incluye la NumberStyles.AllowTrailingWhitestyle marca. |
$ | Símbolo de moneda específico de la referencia cultural. Su posición en value se define mediante las NumberFormatInfo.CurrencyNegativePattern propiedades y NumberFormatInfo.CurrencyPositivePattern de la referencia cultural indicada por el provider parámetro . El símbolo de moneda de la referencia cultural actual puede aparecer en value si style incluye la NumberStyles.AllowCurrencySymbol marca . |
sign | Un signo opcional. El signo puede aparecer al principio de value si incluye la NumberStyles.AllowLeadingSign marca y puede aparecer al final de value si style incluye la NumberStyles.AllowTrailingSignstyle marca . Los paréntesis se pueden usar en value para indicar un valor negativo si style incluye la NumberStyles.AllowParentheses marca . |
dígitos fractional_digits exponential_digits |
Secuencia de dígitos de 0 a 9. Para fractional_digits, solo el dígito 0 es válido. |
, | Símbolo separador de grupo específico de la referencia cultural. El símbolo separador de grupo de la referencia cultural especificada por provider puede aparecer en value si style incluye la NumberStyles.AllowThousands marca . |
. | Símbolo de separador decimal específico de la referencia cultural. El símbolo de separador decimal de la referencia cultural designada por provider puede aparecer en value si style incluye la NumberStyles.AllowDecimalPoint marca . Solo el dígito 0 puede aparecer como un dígito fraccionario para que la operación de análisis se realice correctamente; si fractional_digits incluye cualquier otro dígito, se produce una FormatException excepción . |
E | Carácter "e" o "E", que indica que el valor se representa en notación exponencial (científica). El value parámetro puede representar un número en notación exponencial si style incluye la NumberStyles.AllowExponent marca . |
hexdigits | Secuencia de dígitos hexadecimales de 0 a f, o de 0 a F. |
Nota
La operación de análisis omite los caracteres NUL (U+0000) terminados, s
independientemente del valor del style
argumento.
Un value
con dígitos solo (que corresponde al NumberStyles.None estilo) siempre analiza correctamente. La mayoría de los miembros restantes NumberStyles controlan los elementos que pueden estar presentes, pero no son necesarios para estar presentes, en value
. En la tabla siguiente se indica cómo afectan los miembros individuales NumberStyles a los elementos que pueden estar presentes en value
.
Valor NumberStyles | Elementos permitidos en el valor además de dígitos |
---|---|
None | Solo el elemento digits . |
AllowDecimalPoint | Los elementos decimal point (.) y fractional-digits . |
AllowExponent | Carácter "e" o "E", que indica la notación exponencial. junto con exponential_digits. |
AllowLeadingWhite | Elemento ws al principio de value . |
AllowTrailingWhite | Elemento ws al final de value . |
AllowLeadingSign | Elemento de signo al principio de value . |
AllowTrailingSign | Elemento de signo al final de value . |
AllowParentheses | Elemento de signo en forma de paréntesis que incluye el valor numérico. |
AllowThousands | Elemento separador de grupo (,). |
AllowCurrencySymbol | Elemento currency ($). |
Currency | Todos los elementos. Sin embargo, value no puede representar un número hexadecimal o un número en notación exponencial. |
Float | El elemento ws al principio o al final de value , firma al principio de value y el símbolo decimal (.). El value parámetro también puede usar la notación exponencial. |
Number | Elementos ws separadores de sign grupo (,) y separadores decimales (.). |
Any | Todos los elementos. Sin embargo, value no puede representar un número hexadecimal. |
A diferencia de los demás NumberStyles valores, que permiten pero no requieren la presencia de elementos de estilo concretos en value
, el NumberStyles.AllowHexSpecifier valor de estilo significa que los caracteres numéricos individuales de value
siempre se interpretan como caracteres hexadecimales. Los caracteres hexadecimales válidos son 0-9, A-F y a-f. Las únicas marcas que se pueden combinar con el style
parámetro son NumberStyles.AllowLeadingWhite y NumberStyles.AllowTrailingWhite. (La NumberStyles enumeración incluye un estilo de número compuesto, HexNumber, que incluye ambas marcas de espacio en blanco).
El provider
parámetro es una IFormatProvider implementación. Su GetFormat método devuelve un NumberFormatInfo objeto que proporciona información específica de la referencia cultural sobre el formato de value
. Normalmente, provider
puede ser cualquiera de los siguientes:
Objeto CultureInfo que representa la referencia cultural que proporciona información de formato numérico. Su GetFormat método devuelve el NumberFormatInfo objeto que proporciona información de formato numérico.
Objeto NumberFormatInfo que proporciona información de formato. (Su implementación de GetFormat solo devuelve a sí mismo).
Objeto personalizado que implementa IFormatProvider y usa el GetFormat método para crear instancias y devolver el NumberFormatInfo objeto que proporciona información de formato.
Si provider
es null
, se usa el NumberFormatInfo objeto de la referencia cultural actual.
Consulte también
Se aplica a
Parse(String, NumberStyles, IFormatProvider)
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
- Source:
- BigInteger.cs
Convierte la representación de cadena de un número con el estilo y el formato específico de la referencia cultural que se hayan especificado en su equivalente de BigInteger.
public:
static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
public:
static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider) = System::Numerics::INumberBase<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style, IFormatProvider provider);
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style, IFormatProvider? provider);
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles, provider As IFormatProvider) As BigInteger
Parámetros
- value
- String
Cadena que contiene un número que se va a convertir.
- style
- NumberStyles
Combinación bit a bit de los valores de enumeración que especifican el formato permitido de value
.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre value
.
Devoluciones
Valor equivalente al número especificado en el parámetro value
.
Implementaciones
Excepciones
style
no es un valor NumberStyles.
o bien
style
incluye la marca AllowHexSpecifier o HexNumber junto con otro valor.
value
es null
.
value
no cumple el modelo de entrada especificado por style
.
Ejemplos
En el ejemplo siguiente se realiza varias llamadas al Parse(String, NumberStyles, IFormatProvider) método mediante varias combinaciones de valores para los style
parámetros y provider
.
// Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse(" -300 ",
NumberStyles.Integer, CultureInfo.CurrentCulture));
// Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse(" ~300 ",
NumberStyles.Integer, new BigIntegerFormatProvider()));
// Call parse with only AllowLeadingWhite and AllowTrailingWhite
// Exception thrown because of presence of negative sign
try
{
Console.WriteLine(BigInteger.Parse(" ~300 ",
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
Console.WriteLine("{0}: \n {1}", e.GetType().Name, e.Message);
}
// Call parse with only AllowHexSpecifier
// Exception thrown because of presence of negative sign
try
{
Console.WriteLine(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier,
new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
Console.WriteLine("{0}: \n {1}", e.GetType().Name, e.Message);
}
// Call parse with only NumberStyles.None
// Exception thrown because of presence of white space and sign
try
{
Console.WriteLine(BigInteger.Parse(" -300 ", NumberStyles.None,
new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
Console.WriteLine("{0}: \n {1}", e.GetType().Name, e.Message);
}
// The example displays the followingoutput:
// -300
// -300
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
// Call parse with default values of style and provider
printfn $"""{BigInteger.Parse(" -300 ", NumberStyles.Integer, CultureInfo.CurrentCulture)}"""
// Call parse with default values of style and provider supporting tilde as negative sign
printfn $"""{BigInteger.Parse(" ~300 ", NumberStyles.Integer, new BigIntegerFormatProvider())}"""
// Call parse with only AllowLeadingWhite and AllowTrailingWhite
// Exception thrown because of presence of negative sign
try
printfn
$"""{BigInteger.Parse(
" ~300 ",
NumberStyles.AllowLeadingWhite ||| NumberStyles.AllowTrailingWhite,
new BigIntegerFormatProvider()
)}"""
with :? FormatException as e ->
printfn $"{e.GetType().Name}: \n {e.Message}"
// Call parse with only AllowHexSpecifier
// Exception thrown because of presence of negative sign
try
printfn $"""{BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier, new BigIntegerFormatProvider())}"""
with :? FormatException as e ->
printfn $"{e.GetType().Name}: \n {e.Message}"
// Call parse with only NumberStyles.None
// Exception thrown because of presence of white space and sign
try
printfn $"""{BigInteger.Parse(" -300 ", NumberStyles.None, new BigIntegerFormatProvider())}"""
with :? FormatException as e ->
printfn $"{e.GetType().Name}: \n {e.Message}"
// The example displays the followingoutput:
// -300
// -300
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
// FormatException:
// The value could not be parsed.
' Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse(" -300 ", _
NumberStyles.Integer, CultureInfo.CurrentCulture))
' Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse(" ~300 ", _
NumberStyles.Integer, New BigIntegerFormatProvider()))
' Call parse with only AllowLeadingWhite and AllowTrailingWhite
' Exception thrown because of presence of negative sign
Try
Console.WriteLIne(BigInteger.Parse(" ~300 ", _
NumberStyles.AllowLeadingWhite Or NumberStyles.AllowTrailingWhite, _
New BigIntegerFormatProvider()))
Catch e As FormatException
Console.WriteLine("{0}: {1} {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' Call parse with only AllowHexSpecifier
' Exception thrown because of presence of negative sign
Try
Console.WriteLIne(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier, _
New BigIntegerFormatProvider()))
Catch e As FormatException
Console.WriteLine("{0}: {1} {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' Call parse with only NumberStyles.None
' Exception thrown because of presence of white space and sign
Try
Console.WriteLIne(BigInteger.Parse(" -300 ", NumberStyles.None, _
New BigIntegerFormatProvider()))
Catch e As FormatException
Console.WriteLine("{0}: {1} {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' The example displays the following output:
' -300
' -300
' FormatException:
' The value could not be parsed.
' FormatException:
' The value could not be parsed.
' FormatException:
' The value could not be parsed.
Una serie de llamadas individuales al Parse(String, NumberStyles, IFormatProvider) método pasan una instancia de la siguiente BigIntegerFormatProvider
clase, que define una tilde (~) como signo negativo.
public class BigIntegerFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(NumberFormatInfo))
{
NumberFormatInfo numberFormat = new NumberFormatInfo();
numberFormat.NegativeSign = "~";
return numberFormat;
}
else
{
return null;
}
}
}
type BigIntegerFormatProvider() =
interface IFormatProvider with
member _.GetFormat(formatType: Type) =
if formatType = typeof<NumberFormatInfo> then
let numberFormat = NumberFormatInfo()
numberFormat.NegativeSign <- "~"
numberFormat
else
null
Public Class BigIntegerFormatProvider : Implements IFormatProvider
Public Function GetFormat(formatType As Type) As Object _
Implements IFormatProvider.GetFormat
If formatType Is GetType(NumberFormatInfo) Then
Dim numberFormat As New NumberFormatInfo
numberFormat.NegativeSign = "~"
Return numberFormat
Else
Return Nothing
End If
End Function
End Class
Comentarios
El style
parámetro define los elementos de estilo (como el espacio en blanco, el símbolo de signo positivo o negativo, el símbolo separador de grupo o el símbolo de separador decimal) que se permiten en el value
parámetro para que la operación de análisis se realice correctamente.
styles
debe ser una combinación de marcas de bits de la NumberStyles enumeración . El style
parámetro hace que esta sobrecarga de método sea útil cuando value
contiene la representación de cadena de un valor hexadecimal, cuando el sistema numérico (decimal o hexadecimal) representado por value
solo se conoce en tiempo de ejecución, o cuando se desea denegar el espacio en blanco o un símbolo de signo en value
.
Según el valor de style
, el value
parámetro puede incluir los siguientes elementos:
[ws] [$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
Si style
incluye NumberStyles.AllowHexSpecifier, el value
parámetro puede incluir los siguientes elementos:
[ws] hexdigits[ws]
Los elementos de los corchetes ([ y ]) son opcionales. En esta tabla se describe cada elemento.
Elemento | Descripción |
---|---|
ws | Espacio en blanco opcional. El espacio en blanco puede aparecer al principio de value si incluye la NumberStyles.AllowLeadingWhite marca y puede aparecer al final de value si style incluye la NumberStyles.AllowTrailingWhitestyle marca. |
$ | Símbolo de moneda específico de la referencia cultural. Su posición en la cadena se define mediante las NumberFormatInfo.CurrencyNegativePattern propiedades y NumberFormatInfo.CurrencyPositivePattern de la referencia cultural indicada por el provider parámetro . El símbolo de moneda de la referencia cultural actual puede aparecer en value si style incluye la NumberStyles.AllowCurrencySymbol marca . |
sign | Un signo opcional. El signo puede aparecer al principio de value si incluye la NumberStyles.AllowLeadingSign marca y puede aparecer al final de value si style incluye la NumberStyles.AllowTrailingSignstyle marca . Los paréntesis se pueden usar en value para indicar un valor negativo si style incluye la NumberStyles.AllowParentheses marca . |
dígitos fractional_digits exponential_digits |
Secuencia de dígitos de 0 a 9. Para fractional_digits, solo el dígito 0 es válido. |
, | Símbolo separador de grupo específico de la referencia cultural. El símbolo separador de grupo de la referencia cultural especificada por provider puede aparecer en value si style incluye la NumberStyles.AllowThousands marca . |
. | Símbolo de separador decimal específico de la referencia cultural. El símbolo decimal de la referencia cultural designada por provider puede aparecer en value si style incluye la NumberStyles.AllowDecimalPoint marca . Solo el dígito 0 puede aparecer como un dígito fraccionario para que la operación de análisis se realice correctamente; si fractional_digits incluye cualquier otro dígito, se produce una FormatException excepción . |
E | El carácter "e" o "E", que indica que el valor se representa en notación exponencial (científica). El value parámetro puede representar un número en notación exponencial si style incluye la NumberStyles.AllowExponent marca . |
hexdigits | Secuencia de dígitos hexadecimales de 0 a f, o 0 a F. |
Nota
La operación de análisis omite todos los caracteres NUL (U+0000) de s
, independientemente del valor del style
argumento.
Una cadena solo con dígitos (que corresponde al NumberStyles.None estilo) siempre analiza correctamente. La mayoría de los miembros restantes NumberStyles controlan los elementos que pueden estar presentes, pero no son necesarios para estar presentes, en la cadena de entrada. En la tabla siguiente se indica cómo afectan los miembros individuales NumberStyles a los elementos que pueden estar presentes en value
.
Valor NumberStyles | Elementos permitidos en el valor además de dígitos |
---|---|
None | Solo el elemento digits . |
AllowDecimalPoint | Elementos decimales (.) y fracciones de dígitos . |
AllowExponent | El carácter "e" o "E", que indica la notación exponencial. junto con exponential_digits. |
AllowLeadingWhite | Elemento ws al principio de value . |
AllowTrailingWhite | Elemento ws al final de value . |
AllowLeadingSign | Elemento sign al principio de value . |
AllowTrailingSign | Elemento sign al final de value . |
AllowParentheses | Elemento de signo en forma de paréntesis que incluye el valor numérico. |
AllowThousands | Elemento separador de grupo (,). |
AllowCurrencySymbol | Elemento currency ($). |
Currency | Todos los elementos. Sin embargo, value no puede representar un número hexadecimal o un número en notación exponencial. |
Float | El elemento ws al principio o al final de value , firma al principio de value y el símbolo de separador decimal (.). El value parámetro también puede usar la notación exponencial. |
Number | Elementos ws separadores sign de grupo (,) y separador decimal (.). |
Any | Todos los elementos. Sin embargo, value no puede representar un número hexadecimal. |
Importante
Si usa el Parse método para realizar un recorrido de ida y vuelta, la representación de cadena de un BigInteger valor generado por el ToString método , debe usar el BigInteger.ToString(String) método con el especificador de formato "R" para generar la representación de cadena del BigInteger valor. De lo contrario, la representación de cadena de BigInteger conserva solo los 50 dígitos más significativos del valor original y los datos se pueden perder cuando se usa el Parse método para restaurar el BigInteger valor.
A diferencia de los demás NumberStyles valores, que permiten pero no requieren la presencia de elementos de estilo concretos en value
, el valor de NumberStyles.AllowHexSpecifier estilo significa que los caracteres numéricos individuales de value
siempre se interpretan como caracteres hexadecimales. Los caracteres hexadecimales válidos son 0-9, A-F y a-f. Las únicas marcas que se pueden combinar con el style
parámetro son NumberStyles.AllowLeadingWhite y NumberStyles.AllowTrailingWhite. (La NumberStyles enumeración incluye un estilo de número compuesto, HexNumber, que incluye ambas marcas de espacio en blanco).
Nota
Si value
es la representación de cadena de un número hexadecimal, no puede ir precedida de ninguna decoración (como 0x
o &h
) que la diferencie como un número hexadecimal. Esto hace que se produzca un error en la conversión.
Si value
es una cadena hexadecimal, el Parse(String, NumberStyles) método interpreta value
como un número negativo almacenado mediante la representación complementaria de dos si sus dos primeros dígitos hexadecimales son mayores o iguales que 0x80
. En otras palabras, el método interpreta el bit de orden más alto del primer byte de value
como bit de signo. Para asegurarse de que una cadena hexadecimal se interpreta correctamente como un número positivo, el primer dígito value
de debe tener un valor de cero. Por ejemplo, el método interpreta 0x80
como un valor negativo, pero interpreta 0x080
o 0x0080
como un valor positivo. En el ejemplo siguiente se muestra la diferencia entre las cadenas hexadecimales que representan valores negativos y positivos.
using System;
using System.Globalization;
using System.Numerics;
public class Example
{
public static void Main()
{
string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
foreach (string hexString in hexStrings)
{
BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
}
}
}
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
open System.Globalization
open System.Numerics
let hexStrings =
[| "80"
"E293"
"F9A2FF"
"FFFFFFFF"
"080"
"0E293"
"0F9A2FF"
"0FFFFFFFF"
"0080"
"00E293"
"00F9A2FF"
"00FFFFFFFF" |]
for hexString in hexStrings do
let number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
printfn $"Converted 0x{hexString} to {number:N0}."
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics
Module Example
Public Sub Main()
Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
For Each hexString As String In hexStrings
Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
Next
End Sub
End Module
' The example displays the following output:
' Converted 0x80 to -128.
' Converted 0xE293 to -7533.
' Converted 0xF9A2FF to -417025.
' Converted 0xFFFFFFFF to -1.
' Converted 0x080 to 128.
' Converted 0x0E293 to 58003.
' Converted 0x0F9A2FF to 16360191.
' Converted 0x0FFFFFFFF to 4294967295.
' Converted 0x0080 to 128.
' Converted 0x00E293 to 58003.
' Converted 0x00F9A2FF to 16360191.
' Converted 0x00FFFFFFFF to 4294967295.
El provider
parámetro es una IFormatProvider implementación. Su GetFormat método devuelve un NumberFormatInfo objeto que proporciona información específica de la referencia cultural sobre el formato de value
. Normalmente, provider
puede ser cualquiera de los siguientes:
Objeto CultureInfo que representa la referencia cultural que proporciona información de formato numérico. Su GetFormat método devuelve el NumberFormatInfo objeto que proporciona información de formato numérico.
Objeto NumberFormatInfo que proporciona información de formato. (Su implementación de GetFormat simplemente devuelve a sí mismo).
Objeto personalizado que implementa IFormatProvider y usa el GetFormat método para crear instancias y devolver el NumberFormatInfo objeto que proporciona información de formato.
Si provider
es null
, se usa el NumberFormatInfo objeto de la referencia cultural actual.