BigInteger.Parse Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразует строковое представление числа в его BigInteger эквивалент.
Перегрузки
| Имя | Описание |
|---|---|
| Parse(String, NumberStyles, IFormatProvider) |
Преобразует строковое представление числа в указанном стиле и формате языка и региональных параметров в эквивалентный.BigInteger |
| Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) |
Преобразует представление числа, содержащегося в указанном диапазоне символов только для чтения, в указанном стиле в его BigInteger эквивалент. |
| Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider) | |
| Parse(String, IFormatProvider) |
Преобразует строковое представление числа в указанном формате языка и региональных параметров в эквивалентный.BigInteger |
| Parse(ReadOnlySpan<Byte>, IFormatProvider) | |
| Parse(ReadOnlySpan<Char>, IFormatProvider) |
Анализирует диапазон символов в значение. |
| Parse(String, NumberStyles) |
Преобразует строковое представление числа в указанном стиле в его BigInteger эквивалент. |
| Parse(String) |
Преобразует строковое представление числа в его BigInteger эквивалент. |
Parse(String, NumberStyles, IFormatProvider)
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
Преобразует строковое представление числа в указанном стиле и формате языка и региональных параметров в эквивалентный.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
Параметры
- value
- String
Строка, содержащая число для преобразования.
- style
- NumberStyles
Побитовое сочетание значений перечисления, указывающее разрешенный формат value.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от valueязыка и региональных параметров.
Возвращаемое значение
Значение, эквивалентное числу, указанному в параметре value .
Реализации
Исключения
style значение не является значением NumberStyles .
–или–
style
AllowHexSpecifier включает или HexNumber флаг вместе с другим значением.
value равно null.
value не соответствует входной схеме, указанной в параметре style.
Примеры
В следующем примере выполняется несколько вызовов Parse(String, NumberStyles, IFormatProvider) метода с помощью различных сочетаний значений для style параметров и 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.
Ряд отдельных вызовов Parse(String, NumberStyles, IFormatProvider) метода передает экземпляр следующего BigIntegerFormatProvider класса, который определяет тильду (~) как отрицательный знак.
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
Комментарии
Параметр style определяет элементы стиля (например, пробелы, положительные или отрицательные знаки, символ разделителя групп или символ десятичной запятой), которые разрешены в value параметре для успешной операции синтаксического анализа.
styles должен быть сочетанием битовых флагов из NumberStyles перечисления. Параметр style делает эту перегрузку метода полезной, если value содержит строковое представление шестнадцатеричного значения, когда числовая система (десятичная или шестнадцатеричная) представлена value только во время выполнения, или если требуется запретить пробел или символ знака.value
В зависимости от значения stylevalue параметр может включать следующие элементы:
[ws][$][знак][цифры,]цифры[.fractional_digits][E[sign]exponential_digits][ws]
Если style этот параметр включает NumberStyles.AllowHexSpecifierв себя, параметр value может включать следующие элементы:
[ws]hexdigits[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| Ws | Необязательный пробел. Пробел может отображаться в начале value , если style он включает NumberStyles.AllowLeadingWhite флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingWhite флаг. |
| $ | Символ валюты, зависящий от языка и региональных параметров. Его положение в строке определяется и свойствами NumberFormatInfo.CurrencyNegativePatternNumberFormatInfo.CurrencyPositivePattern языка и региональных параметров, указанных параметром provider . Символ валюты текущего языка и региональных параметров может отображаться в value том случае, если style он включает NumberStyles.AllowCurrencySymbol флаг. |
| знак | Необязательный знак. Знак может появиться в начале value , если style он включает NumberStyles.AllowLeadingSign флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingSign флаг. Скобки можно использовать для value указания отрицательного NumberStyles.AllowParentheses значения, если style он содержит флаг. |
|
Цифр fractional_digits exponential_digits |
Последовательность цифр от 0 до 9. Для fractional_digits допустимо только цифра 0. |
| , | Символ разделителя групп, зависящих от языка и региональных параметров. Символ разделителя групп для языка provider и региональных параметров может отображаться в value том случае, если style он NumberStyles.AllowThousands содержит флаг. |
| . | Символ десятичной запятой для конкретного языка и региональных параметров. Символ десятичной запятой языка и региональных provider параметров может отображаться в value том случае, если style он содержит NumberStyles.AllowDecimalPoint флаг. Только цифра 0 может отображаться как дробная цифра для успешной операции синтаксического анализа; Если fractional_digits включает любую другую цифру, FormatException создается исключение. |
| E | Символ e или E, указывающий, что значение представлено в экспоненциальной (научной) нотации. Параметр value может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг. |
| hexdigits | Последовательность шестнадцатеричных цифр от 0 до f или 0 до F. |
Замечание
Все завершающие символы s NUL (U+0000) игнорируются операцией синтаксического анализа независимо от значения аргумента style .
Строка только с цифрами (которая соответствует NumberStyles.None стилю) всегда анализируется успешно. Большинство оставшихся NumberStyles элементов управления элементами управления, которые могут присутствовать, но не требуются присутствовать в входной строке. В следующей таблице показано, как отдельные NumberStyles элементы влияют на элементы, которые могут присутствовать в value.
| Значение NumberStyles | Элементы, разрешенные в значении в дополнение к цифрам |
|---|---|
| None | Только элемент цифр . |
| AllowDecimalPoint | Элементы десятичной запятой (.) и дробной цифры . |
| AllowExponent | Символ e или E, указывающий экспоненциальную нотацию. вместе с exponential_digits. |
| AllowLeadingWhite | Элемент ws в начале value. |
| AllowTrailingWhite | Элемент ws в конце value. |
| AllowLeadingSign | Элемент sign в начале value. |
| AllowTrailingSign | Элемент sign в конце value. |
| AllowParentheses | Элемент sign в виде скобки, включающей числовое значение. |
| AllowThousands | Элемент разделителя групп (,). |
| AllowCurrencySymbol | Элемент валюты ($). |
| Currency | Все элементы.
value Однако не может представлять шестнадцатеричное число или число в экспоненциальной нотации. |
| Float | Элемент ws в начале или конце value, знак в начале valueи символ десятичной запятой (.). Параметр value также может использовать экспоненциальную нотацию. |
| Number | Элементы ws, signразделитель групп (,) и десятичная точка (.). |
| Any | Все элементы.
value Однако не может представлять шестнадцатеричное число. |
Это важно
Если метод используется Parse для обхода строкового BigInteger представления значения, выходного ToString методом, следует использовать BigInteger.ToString(String) метод с описателями формата R для создания строкового представления BigInteger значения. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.
В отличие от других NumberStyles значений, которые позволяют, но не требуют наличия определенных элементов стиля в value, NumberStyles.AllowHexSpecifier значение стиля означает, что отдельные числовые символы всегда value интерпретируются как шестнадцатеричные символы. Допустимые шестнадцатеричные символы: 0-9, A-F и a-f. Единственными другими флагами, которые можно объединить с параметром style , являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles включает составной стиль чисел, HexNumberкоторый включает оба флага пробела.)
Замечание
Если value строковое представление шестнадцатеричного числа, оно не может предшествовать любому украшению (например 0x , или &h) которое отличает его как шестнадцатеричное число. Это приводит к сбою преобразования.
Если value это шестнадцатеричная строка, метод интерпретирует value как отрицательное число, хранящееся с помощью двух дополнительных представлений, Parse(String, NumberStyles) если первые две шестнадцатеричные цифры больше или равно0x80. Другими словами, метод интерпретирует бит первого байта в качестве бита знака.value Чтобы убедиться, что шестнадцатеричная строка правильно интерпретируется как положительное число, первая цифра value должна иметь значение нуля. Например, метод интерпретирует как отрицательное значение, но он интерпретирует 0x80 либо 0x0800x0080 как положительное значение. В следующем примере показано различие между шестнадцатеричными строками, представляющими отрицательные и положительные значения.
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.
Параметр provider является реализацией IFormatProvider . Его GetFormat метод возвращает объект, предоставляющий NumberFormatInfo сведения о формате valueязыка и региональных параметров. Как правило, provider может быть одним из следующих вариантов:
Объект CultureInfo , представляющий язык и региональные параметры, предоставляющие числовые сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий числовые сведения о форматировании.
Объект NumberFormatInfo , предоставляющий сведения о форматировании. (Его реализация GetFormat просто возвращается.)
Настраиваемый объект, реализующий IFormatProvider и использующий GetFormat метод для создания экземпляра и возврата NumberFormatInfo объекта, предоставляющего сведения о форматировании.
В provider противном nullNumberFormatInfo случае используется объект для текущего языка и региональных параметров.
См. также раздел
Применяется к
Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
Преобразует представление числа, содержащегося в указанном диапазоне символов только для чтения, в указанном стиле в его 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
Параметры
- value
- ReadOnlySpan<Char>
Диапазон символов только для чтения, содержащий число для преобразования.
- style
- NumberStyles
Побитовое сочетание значений перечисления, указывающее разрешенный формат value.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от valueязыка и региональных параметров.
Возвращаемое значение
Значение, эквивалентное числу, указанному в параметре value .
Реализации
Исключения
style значение не является значением NumberStyles .
–или–
style
AllowHexSpecifier включает или HexNumber флаг вместе с другим значением.
value равно null.
value не соответствует входной схеме, указанной в параметре style.
Комментарии
Параметр style определяет элементы стиля (например, пробелы, положительные или отрицательные знаки, символ разделителя групп или символ десятичной запятой), которые разрешены в value параметре для успешной операции синтаксического анализа.
styles должен быть сочетанием битовых флагов из NumberStyles перечисления. Параметр style делает эту перегрузку метода полезной, если value содержит шестнадцатеричное значение, когда числовая система (десятичная или шестнадцатеричная) представлена value только во время выполнения, или если требуется запретить пробел или символ знака.value
В зависимости от значения stylevalue параметр может включать следующие элементы:
[ws][$][знак][цифры,]цифры[.fractional_digits][E[sign]exponential_digits][ws]
Если style этот параметр включает NumberStyles.AllowHexSpecifierв себя, параметр value может включать следующие элементы:
[ws]hexdigits[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| Ws | Необязательный пробел. Пробел может отображаться в начале value , если style он включает NumberStyles.AllowLeadingWhite флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingWhite флаг. |
| $ | Символ валюты, зависящий от языка и региональных параметров. Его положение value определяется параметрами NumberFormatInfo.CurrencyNegativePattern и NumberFormatInfo.CurrencyPositivePattern свойствами языка и региональных provider параметров. Символ валюты текущего языка и региональных параметров может отображаться в value том случае, если style он включает NumberStyles.AllowCurrencySymbol флаг. |
| знак | Необязательный знак. Знак может появиться в начале value , если style он включает NumberStyles.AllowLeadingSign флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingSign флаг. Скобки можно использовать для value указания отрицательного NumberStyles.AllowParentheses значения, если style он содержит флаг. |
|
Цифр fractional_digits exponential_digits |
Последовательность цифр от 0 до 9. Для fractional_digits допустимо только цифра 0. |
| , | Символ разделителя групп, зависящих от языка и региональных параметров. Символ разделителя групп для языка provider и региональных параметров может отображаться в value том случае, если style он NumberStyles.AllowThousands содержит флаг. |
| . | Символ десятичной запятой для конкретного языка и региональных параметров. Символ десятичной запятой языка и региональных provider параметров может отображаться в value том случае, если style он содержит NumberStyles.AllowDecimalPoint флаг. Только цифра 0 может отображаться как дробная цифра для успешной операции синтаксического анализа; Если fractional_digits включает любую другую цифру, FormatException создается исключение. |
| E | Символ e или E, указывающий, что значение представлено в экспоненциальной (научной) нотации. Параметр value может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг. |
| hexdigits | Последовательность шестнадцатеричных цифр от 0 до f или 0 до F. |
Замечание
Все завершающие символы s NUL (U+0000) игнорируются операцией синтаксического анализа независимо от значения аргумента style .
Только value цифры (соответствующие стилю NumberStyles.None ) всегда анализируют. Большинство остальных NumberStyles элементов управления элементами управления, которые могут присутствовать, но не должны присутствовать в value. В следующей таблице показано, как отдельные NumberStyles элементы влияют на элементы, которые могут присутствовать в value.
| Значение NumberStyles | Элементы, разрешенные в значении в дополнение к цифрам |
|---|---|
| None | Только элемент цифр . |
| AllowDecimalPoint | Элементы десятичной запятой (.) и дробной цифры . |
| AllowExponent | Символ e или E, указывающий экспоненциальную нотацию. вместе с exponential_digits. |
| AllowLeadingWhite | Элемент ws в начале value. |
| AllowTrailingWhite | Элемент ws в конце value. |
| AllowLeadingSign | Элемент sign в начале value. |
| AllowTrailingSign | Элемент sign в конце value. |
| AllowParentheses | Элемент sign в виде скобки, включающей числовое значение. |
| AllowThousands | Элемент разделителя групп (,). |
| AllowCurrencySymbol | Элемент валюты ($). |
| Currency | Все элементы.
value Однако не может представлять шестнадцатеричное число или число в экспоненциальной нотации. |
| Float | Элемент ws в начале или конце value, знак в начале valueи символ десятичной запятой (.). Параметр value также может использовать экспоненциальную нотацию. |
| Number | Элементы ws, signразделитель групп (,) и десятичная точка (.). |
| Any | Все элементы.
value Однако не может представлять шестнадцатеричное число. |
В отличие от других NumberStyles значений, которые позволяют, но не требуют наличия определенных элементов стиля в value, NumberStyles.AllowHexSpecifier значение стиля означает, что отдельные числовые символы всегда value интерпретируются как шестнадцатеричные символы. Допустимые шестнадцатеричные символы: 0-9, A-F и a-f. Единственными другими флагами, которые можно объединить с параметром style , являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles включает составной стиль чисел, HexNumberкоторый включает оба флага пробела.)
Параметр provider является реализацией IFormatProvider . Его GetFormat метод возвращает объект, предоставляющий NumberFormatInfo сведения о формате valueязыка и региональных параметров. Как правило, provider может быть одним из следующих вариантов:
Объект CultureInfo , представляющий язык и региональные параметры, предоставляющие числовые сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий числовые сведения о форматировании.
Объект NumberFormatInfo , предоставляющий сведения о форматировании. (Его реализация GetFormat просто возвращается.)
Настраиваемый объект, реализующий IFormatProvider и использующий GetFormat метод для создания экземпляра и возврата NumberFormatInfo объекта, предоставляющего сведения о форматировании.
В provider противном nullNumberFormatInfo случае используется объект для текущего языка и региональных параметров.
См. также раздел
Применяется к
Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)
public static System.Numerics.BigInteger Parse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
static member Parse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As BigInteger
Параметры
- utf8Text
- ReadOnlySpan<Byte>
- style
- NumberStyles
- provider
- IFormatProvider
Возвращаемое значение
Реализации
Применяется к
Parse(String, IFormatProvider)
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
Преобразует строковое представление числа в указанном формате языка и региональных параметров в эквивалентный.BigInteger
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
Параметры
- value
- String
Строка, содержащая число для преобразования.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от valueязыка и региональных параметров.
Возвращаемое значение
Значение, эквивалентное числу, указанному в параметре value .
Реализации
Исключения
value равно null.
value не соответствует правильному формату.
Примеры
В следующих примерах показаны два способа определения тильды (~) в качестве отрицательного знака форматирования BigInteger значений. Обратите внимание, что для отображения BigInteger значений в том же формате, что и исходные строки, код должен вызвать BigInteger.ToString(IFormatProvider) метод и передать его NumberFormatInfo объекту, предоставляющий сведения о форматировании.
В первом примере определяется класс, реализующий IFormatProvider и использующий GetFormat метод для возврата NumberFormatInfo объекта, предоставляющего сведения о форматировании.
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
Затем BigInteger объект можно создать экземпляр с помощью следующего кода:
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)
Второй пример является более простым. Он передает NumberFormatInfo объект, предоставляющий сведения о форматировании в provider параметр.
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)
Комментарии
Параметр value должен быть строковым представлением числа в следующей форме:
[ws][знак]цифры[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| Ws | Необязательный пробел. |
| знак | Необязательный знак. Допустимые символы знака определяются NumberFormatInfo.NegativeSign и NumberFormatInfo.PositiveSign свойствами NumberFormatInfo объекта, возвращаемого методом provider объекта GetFormat . |
| Цифр | Последовательность цифр от 0 до 9. Все начальные нули игнорируются. |
Замечание
Строка, value указанная параметром, интерпретируется с помощью NumberStyles.Integer стиля. Он не может содержать разделители групп или десятичный разделитель, и он не может иметь десятичную часть.
Это важно
Если метод используется Parse для обхода строкового BigInteger представления значения, выходного ToString методом, следует использовать BigInteger.ToString(String) метод с описателями формата R для создания строкового представления BigInteger значения. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.
Параметр provider — это IFormatProvider реализация, метод которой GetFormat возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании, зависящие от языка и региональных параметров.
Parse(String, IFormatProvider) При вызове метода вызывается provider метод параметра GetFormat и передает его Type объект, представляющий NumberFormatInfo тип. Затем GetFormat метод возвращает NumberFormatInfo объект, предоставляющий сведения о формате value параметра. Существует три способа использования provider параметра для предоставления пользовательских сведений о форматировании в операцию синтаксического анализа:
Можно передать объект, представляющий язык и региональные CultureInfo параметры, предоставляющие сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий числовые сведения о форматировании для этого языка и региональных параметров.
Можно передать фактический NumberFormatInfo объект, предоставляющий числовые сведения о форматировании. (Его реализация GetFormat просто возвращается.)
Вы можете передать настраиваемый объект, реализующий IFormatProvider. Его GetFormat метод создает экземпляр и возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании.
Если provider это nullтак, форматирование value интерпретируется на NumberFormatInfo основе объекта текущего языка и региональных параметров.
См. также раздел
Применяется к
Parse(ReadOnlySpan<Byte>, IFormatProvider)
public:
static System::Numerics::BigInteger Parse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider) = IUtf8SpanParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider);
static member Parse : ReadOnlySpan<byte> * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider) As BigInteger
Параметры
- utf8Text
- ReadOnlySpan<Byte>
- provider
- IFormatProvider
Возвращаемое значение
Реализации
Применяется к
Parse(ReadOnlySpan<Char>, IFormatProvider)
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
Анализирует диапазон символов в значение.
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
Параметры
- s
- ReadOnlySpan<Char>
Диапазон символов для синтаксического анализа.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от sязыка и региональных параметров.
Возвращаемое значение
Результат синтаксического анализа s.
Реализации
Применяется к
Parse(String, NumberStyles)
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
Преобразует строковое представление числа в указанном стиле в его BigInteger эквивалент.
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
Параметры
- value
- String
Строка, содержащая число для преобразования.
- style
- NumberStyles
Побитовое сочетание значений перечисления, указывающее разрешенный формат value.
Возвращаемое значение
Значение, эквивалентное числу, указанному в параметре value .
Исключения
style значение не является значением NumberStyles .
–или–
style
AllowHexSpecifier включает или HexNumber флаг вместе с другим значением.
value равно null.
value не соответствует входной схеме, указанной в параметре NumberStyles.
Примеры
В следующем примере показаны вызовы Parse(String, NumberStyles) метода с несколькими возможными значениями для style параметра. В нем показано, как интерпретировать строку как шестнадцатеричное значение, а также как запретить пробелы и знаки символов.
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.
Комментарии
Параметр style определяет элементы стиля (например, пробелы, положительные или отрицательные знаки, символ разделителя групп или символ десятичной запятой), которые разрешены в value параметре для успешной операции синтаксического анализа.
styles должен быть сочетанием битовых флагов из NumberStyles перечисления. Параметр style делает эту перегрузку метода полезной, если value содержит строковое представление шестнадцатеричного значения, когда числовая система (десятичная или шестнадцатеричная) представлена value только во время выполнения, или если требуется запретить пробел или символ знака.value
В зависимости от значения stylevalue параметр может включать следующие элементы:
[ws][$][знак][цифры,]цифры[.fractional_digits][E[sign]exponential_digits][ws]
Если style этот value параметр включает в себяNumberStyles.AllowHexSpecifier, параметр может содержать следующие элементы:
[ws]hexdigits[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| Ws | Необязательный пробел. Пробел может отображаться в начале value , если style он включает NumberStyles.AllowLeadingWhite флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingWhite флаг. |
| $ | Символ валюты, зависящий от языка и региональных параметров. Его положение в строке определяется и NumberFormatInfo.CurrencyPositivePattern свойствами NumberFormatInfo.CurrencyNegativePattern текущего языка и региональных параметров. Символ валюты текущего языка и региональных параметров может отображаться в value том случае, если style он включает NumberStyles.AllowCurrencySymbol флаг. |
| знак | Необязательный знак. Знак может появиться в начале value , если style он включает NumberStyles.AllowLeadingSign флаг, и он может отображаться в конце value , если style он включает NumberStyles.AllowTrailingSign флаг. Скобки можно использовать для value указания отрицательного NumberStyles.AllowParentheses значения, если style он содержит флаг. |
|
Цифр fractional_digits exponential_digits |
Последовательность цифр от 0 до 9. Для fractional_digits допустимо только цифра 0. |
| , | Символ разделителя групп, зависящих от языка и региональных параметров. Разделитель групп текущего языка и региональных параметров может отображаться в value том случае, если style он содержит NumberStyles.AllowThousands флаг. |
| . | Символ десятичной запятой для конкретного языка и региональных параметров. Символ десятичной запятой текущего языка и региональных параметров может отображаться при valuestyle наличии флага NumberStyles.AllowDecimalPoint . Только цифра 0 может отображаться как дробная цифра для успешной операции синтаксического анализа; Если fractional_digits включает любую другую цифру, FormatException создается исключение. |
| E | Символ e или E, указывающий, что значение представлено в экспоненциальной (научной) нотации. Параметр value может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг. |
| hexdigits | Последовательность шестнадцатеричных цифр от 0 до f или 0 до F. |
Замечание
Все завершающие символы s NUL (U+0000) игнорируются операцией синтаксического анализа независимо от значения аргумента style .
Строка только с цифрами (которая соответствует NumberStyles.None стилю) всегда анализируется успешно. Большинство оставшихся NumberStyles элементов управления элементами управления, которые могут присутствовать, но не требуются присутствовать в входной строке. В следующей таблице показано, как отдельные NumberStyles элементы влияют на элементы, которые могут присутствовать в value.
Значение NumberStyles |
Элементы, разрешенные в value дополнение к цифрам |
|---|---|
| None | Только элемент цифр . |
| AllowDecimalPoint | Элементы десятичной запятой (.) и дробной цифры . |
| AllowExponent | Символ e или E, указывающий экспоненциальную нотацию, а также exponential_digits. |
| AllowLeadingWhite | Элемент ws в начале value. |
| AllowTrailingWhite | Элемент ws в конце value. |
| AllowLeadingSign | Элемент sign в начале value. |
| AllowTrailingSign | Элемент sign в конце value. |
| AllowParentheses | Элемент sign в виде скобки, включающей числовое значение. |
| AllowThousands | Элемент разделителя групп (,). |
| AllowCurrencySymbol | Элемент валюты ($). |
| Currency | Все элементы.
value Однако не может представлять шестнадцатеричное число или число в экспоненциальной нотации. |
| Float | Элемент ws в начале или конце value, знак в начале valueи символ десятичной запятой (.). Параметр value также может использовать экспоненциальную нотацию. |
| Number | Элементы ws, signразделитель групп (,) и десятичная точка (.). |
| Any | Все элементы.
value Однако не может представлять шестнадцатеричное число. |
Это важно
Если метод используется Parse для обхода строкового BigInteger представления значения, выходного ToString методом, следует использовать BigInteger.ToString(String) метод с описателями формата R для создания строкового представления BigInteger значения. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.
В отличие от других NumberStyles значений, которые позволяют, но не требуются, наличие определенных элементов стиля в value, NumberStyles.AllowHexSpecifier значение стиля означает, что отдельные числовые символы всегда value интерпретируются как шестнадцатеричные символы. Допустимые шестнадцатеричные символы: 0-9, A-F и a-f. Единственными другими флагами, которые можно объединить с параметром style , являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles включает составной стиль чисел, HexNumberкоторый включает оба флага пробела.)
Замечание
Если value строковое представление шестнадцатеричного числа, оно не может предшествовать любому украшению (например 0x , или &h) которое отличает его как шестнадцатеричное число. Это приводит к сбою преобразования.
Если value это шестнадцатеричная строка, метод интерпретирует value как отрицательное число, хранящееся с помощью двух дополнительных представлений, Parse(String, NumberStyles) если первые две шестнадцатеричные цифры больше или равно0x80. Другими словами, метод интерпретирует бит первого байта в качестве бита знака.value Чтобы убедиться, что шестнадцатеричная строка правильно интерпретируется как положительное число, первая цифра value должна иметь значение нуля. Например, метод интерпретирует как отрицательное значение, но он интерпретирует 0x80 либо 0x0800x0080 как положительное значение. В следующем примере показано различие между шестнадцатеричными строками, представляющими отрицательные и положительные значения.
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.
Параметр value анализируется с помощью сведений о форматировании в объекте NumberFormatInfo , инициализированном для текущего языка и региональных параметров системы. Чтобы указать язык и региональные параметры, сведения о форматировании которых используются для операции синтаксического анализа, вызовите перегрузку Parse(String, NumberStyles, IFormatProvider) .
См. также раздел
Применяется к
Parse(String)
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
- Исходный код:
- BigInteger.cs
Преобразует строковое представление числа в его BigInteger эквивалент.
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
Параметры
- value
- String
Строка, содержащая число для преобразования.
Возвращаемое значение
Значение, эквивалентное числу, указанному в параметре value .
Исключения
value равно null.
value не соответствует правильному формату.
Примеры
В следующем примере метод используется Parse(String) для создания экземпляра двух BigInteger объектов. Он умножает каждый объект на другое число, а затем вызывает Compare метод для определения связи между двумя значениями.
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.
Комментарии
Параметр value должен быть строковым представлением числа в следующей форме.
[ws][знак]цифры[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. Каждый из элементов описан в таблице ниже.
| Элемент | Description |
|---|---|
| Ws | Необязательный пробел. |
| знак | Необязательный знак. Допустимые символы знака определяются и свойствами NumberFormatInfo.NegativeSignNumberFormatInfo.PositiveSign текущего языка и региональных параметров. |
| Цифр | Последовательность цифр от 0 до 9. Все начальные нули игнорируются. |
Замечание
Строка, value указанная параметром, интерпретируется с помощью NumberStyles.Integer стиля. Он не может содержать разделители групп или десятичный разделитель, и он не может иметь десятичную часть.
Параметр value анализируется с помощью сведений о форматировании в объекте System.Globalization.NumberFormatInfo , инициализированном для текущего языка и региональных параметров системы. Дополнительные сведения см. в разделе NumberFormatInfo.CurrentInfo. Чтобы проанализировать строку с помощью сведений о форматировании определенного языка и региональных параметров, используйте Parse(String, IFormatProvider) этот метод.
Это важно
Если метод используется Parse для обхода строкового BigInteger представления значения, выходного ToString методом, следует использовать BigInteger.ToString(String) метод с описателями формата R для создания строкового представления BigInteger значения. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.