BigInteger.Parse メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
数値の文字列形式を、それと等価の BigInteger に変換します。
オーバーロード
Parse(String) |
数値の文字列形式を、それと等価の BigInteger に変換します。 |
Parse(ReadOnlySpan<Char>, IFormatProvider) |
文字のスパンを値に解析します。 |
Parse(String, NumberStyles) |
指定のスタイルで表現された数値の文字列形式を、それと等価な BigInteger に変換します。 |
Parse(String, IFormatProvider) |
指定されたカルチャ固有の書式で表現された文字列形式の数値を、それと等価の BigInteger に変換します。 |
Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) |
指定の文字の読み取り専用のスパンに含まれている、指定のスタイルで表現された数値を、それと等価な BigInteger に変換します。 |
Parse(String, NumberStyles, IFormatProvider) |
指定したスタイルおよびカルチャ固有の書式の数値の文字列形式を、それと等価の BigInteger に変換します。 |
Parse(String)
- ソース:
- 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) 使用して 2 つの BigInteger オブジェクトをインスタンス化します。 各オブジェクトに別の数値を乗算し、 メソッドを Compare 呼び出して、2 つの値間のリレーションシップを決定します。
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][sign]digits[ws]
角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。
要素 | 説明 |
---|---|
ws | オプションの空白。 |
sign | 省略可能な記号。 有効な符号文字は、現在のカルチャの NumberFormatInfo.NegativeSign プロパティと NumberFormatInfo.PositiveSign プロパティによって決まります。 |
数値 | 0 から 9 までの数字のシーケンス。 先頭の 0 は無視されます。 |
注意
パラメーターで value
指定された文字列は、 スタイルを使用 NumberStyles.Integer して解釈されます。 グループ区切り記号または小数点記号を含めることはできません。また、小数部を含めることもできます。
パラメーターは value
、現在のシステム カルチャ用に初期化された オブジェクトの System.Globalization.NumberFormatInfo 書式設定情報を使用して解析されます。 詳細については、「NumberFormatInfo.CurrentInfo」を参照してください。 特定のカルチャの書式設定情報を使用して文字列を解析するには、 メソッドを使用します Parse(String, IFormatProvider) 。
重要
メソッドをParse使用して、 メソッドによってToString出力された値の文字列表現をBigIntegerラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列表現では元の BigInteger 値の最上位 50 桁のみが保持され、 メソッドを使用 Parse して値を復元 BigInteger するとデータが失われる可能性があります。
こちらもご覧ください
適用対象
Parse(ReadOnlySpan<Char>, IFormatProvider)
- ソース:
- 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 に変換します。
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
パラメーターで指定されている数値と等価の値。
例外
value
が null
です。
value
は、NumberStyles によって指定された入力パターンに従っていません。
例
次の例は、 パラメーターに使用できるいくつかの値を Parse(String, NumberStyles) 持つ メソッドの呼び出しを style
示しています。 文字列を 16 進数の値として解釈する方法と、スペースと記号を禁止する方法を示します。
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
、 で表される数値システム (10 進数または 16 進数) が実行時にのみ認識されるvalue
場合、または で空白または記号をvalue
禁止する場合に、16 進数の値の文字列表現を含む場合に、このメソッドオーバーロードを役立ちますvalue
。
の style
値に応じて、 パラメーターに value
次の要素を含めることができます。
[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
に が含まれているNumberStyles.AllowHexSpecifier場合style
、パラメーターにはvalue
次の要素を含めることができます。
[ws]hexdigits[ws]
角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。
要素 | 説明 |
---|---|
ws | オプションの空白。 空白は、 フラグを含む場合は のvalue 先頭に表示され、フラグが含NumberStyles.AllowLeadingWhiteまれている場合style は のvalue 末尾にNumberStyles.AllowTrailingWhite表示style されます。 |
$ | カルチャ固有の通貨記号。 文字列内での位置は、現在のカルチャの NumberFormatInfo.CurrencyNegativePattern プロパティと NumberFormatInfo.CurrencyPositivePattern プロパティによって定義されます。 に フラグが含まれている場合style は、現在のカルチャの通貨記号を NumberStyles.AllowCurrencySymbol にvalue 表示できます。 |
sign | 省略可能な記号。 署名は、 フラグが含まれている場合は のvalue 先頭に表示され、フラグが含NumberStyles.AllowLeadingSignまれている場合style は のvalue 末尾にNumberStyles.AllowTrailingSign表示style されます。 に フラグが含まれている場合style は、かっこを使用value して負の値をNumberStyles.AllowParentheses示すことができます。 |
数値 fractional_digits exponential_digits |
0 から 9 までの数字のシーケンス。 fractional_digitsの場合、数字 0 のみが有効です。 |
, | カルチャ固有のグループ区切り記号。 に フラグが含まれている場合style は、現在のカルチャのグループ区切り記号を NumberStyles.AllowThousands にvalue 表示できます。 |
. | カルチャ固有の小数点記号。 に フラグが含まれている場合style は、現在のカルチャの小数点記号を NumberStyles.AllowDecimalPoint にvalue 表示できます。 解析操作を成功させるために小数部の数字として表示できるのは、数字 0 のみです。 fractional_digitsに他の 数字が含まれている場合は、 FormatException がスローされます。 |
E | "e" または "E" 文字。値が指数 (指数) 表記で表されることを示します。 フラグが含まれている場合style 、パラメーターはvalue 指数表記で数値をNumberStyles.AllowExponent表すことができます。 |
hexdigits | 0 から f、または 0 から F までの 16 進数のシーケンス。 |
注意
の終端の NUL (U+0000) 文字 s
は、引数の style
値に関係なく、解析操作では無視されます。
数字のみの文字列 (スタイルに NumberStyles.None 対応) は常に正常に解析されます。 残りの NumberStyles メンバーのほとんどは、入力文字列に存在する可能性がありますが、存在する必要がない要素を制御します。 次の表は、 に存在する可能性がある要素に対する個々 NumberStyles のメンバーの value
影響を示しています。
NumberStyles 値 |
数字に加えて許可される value 要素 |
---|---|
None | digits 要素のみ。 |
AllowDecimalPoint | 小数点 (.) と 小数部の要素 。 |
AllowExponent | 指数表記と exponential_digitsを示す "e" または "E" 文字。 |
AllowLeadingWhite | の先頭value にある ws 要素。 |
AllowTrailingWhite | の末尾value にある ws 要素。 |
AllowLeadingSign | の先頭value にある sign 要素。 |
AllowTrailingSign | の末尾value にある sign 要素。 |
AllowParentheses | 数値を囲むかっこの形式の 符号 要素。 |
AllowThousands | グループ区切り記号 (,) 要素。 |
AllowCurrencySymbol | currency ($) 要素。 |
Currency | すべての要素。 ただし、 value 指数表記で 16 進数または数値を表すことはできません。 |
Float | の先頭または末尾にある value ws 要素、の先頭にvalue 記号を付け、小数点 (.) 記号を指定します。 パラメーターでは value 指数表記を使用することもできます。 |
Number | 、ws sign 、グループ区切り記号 (、)、および小数点 (.) 要素。 |
Any | すべての要素。 ただし、 value 16 進数を表すことはできません。 |
重要
メソッドをParse使用して、 メソッドによってToString出力された値のBigInteger文字列表現をラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列表現では元の BigInteger 値の最上位 50 桁のみが保持され、 メソッドを Parse 使用して値を復元 BigInteger するとデータが失われる可能性があります。
で特定のスタイル要素NumberStyles.AllowHexSpecifiervalue
が存在することを可能にするが、必要としない他NumberStylesの値とは異なり、スタイル値は、 の個々の数値がvalue
常に 16 進文字として解釈されることを意味します。 有効な 16 進文字は、0 から 9、A から F、および a から f です。 パラメーターと組み合わせることができる他のフラグは NumberStyles.AllowLeadingWhite と style
NumberStyles.AllowTrailingWhiteのみです。 (列挙には NumberStyles 、 HexNumber両方の空白フラグを含む複合数値スタイル が含まれています)。
注意
が 16 進数の文字列表現の場合value
、前に 16 進数として区別する装飾 (や &h
など0x
) を付けることはできません。 これにより、変換が失敗します。
が 16 進数の文字列の場合value
、メソッドは、Parse(String, NumberStyles)最初の 2 桁の 16 進数が 以上0x80
の場合、2 の補数表現を使用して格納された負の数として解釈value
します。 つまり、 メソッドは、 の最初のバイト value
の最上位ビットを符号ビットとして解釈します。 16 進文字列が正の数値として正しく解釈されるようにするには、 の最初の桁の value
値が 0 である必要があります。 たとえば、 メソッドは負の0x80
値として解釈されますが、または 0x0080
を0x080
正の値として解釈します。 次の例は、負の値と正の値を表す 16 進文字列の違いを示しています。
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, IFormatProvider)
- ソース:
- 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
が正しい形式ではありません。
例
次の例では、チルダ (~) を書式設定値の負の符号として定義する 2 つの方法を 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)
2 番目の例は、より簡単です。 パラメーターに 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][sign]digits[ws]
角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。
要素 | 説明 |
---|---|
ws | オプションの空白。 |
sign | 省略可能な記号。 有効な符号文字は、オブジェクトの メソッドによってNumberFormatInfo.NegativeSign返される オブジェクトの NumberFormatInfo および NumberFormatInfo.PositiveSign プロパティによってprovider GetFormat決定されます。 |
数値 | 0 から 9 までの数字のシーケンス。 先行ゼロは無視されます。 |
注意
パラメーターで value
指定された文字列は、 スタイルを NumberStyles.Integer 使用して解釈されます。 グループ区切り記号または小数点記号を含めることはできません。また、小数部を含めることはできません。
重要
メソッドをParse使用して、 メソッドによってToString出力された値のBigInteger文字列表現をラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列表現では元の BigInteger 値の最上位 50 桁のみが保持され、 メソッドを Parse 使用して値を復元 BigInteger するとデータが失われる可能性があります。
パラメーターはprovider
、カルチャ固有のIFormatProvider書式設定情報を提供する オブジェクトをNumberFormatInfoメソッドが返す実装GetFormatです。 メソッドがParse(String, IFormatProvider)呼び出されると、パラメーターの GetFormat メソッドがprovider
呼び出され、型をType表すオブジェクトがNumberFormatInfo渡されます。 メソッドは GetFormat 、パラメーターの形式に NumberFormatInfo 関する情報を提供する オブジェクトを value
返します。 パラメーターを使用 provider
して、解析操作にカスタム書式情報を指定するには、次の 3 つの方法があります。
書式設定情報を CultureInfo 提供するカルチャを表す オブジェクトを渡すことができます。 そのメソッドは GetFormat 、そのカルチャの NumberFormatInfo 数値書式情報を提供する オブジェクトを返します。
数値書式情報を提供する実際 NumberFormatInfo のオブジェクトを渡すことができます。 (の実装 GetFormat はそれ自体を返すだけです)。
を実装 IFormatProviderするカスタム オブジェクトを渡すことができます。 そのメソッドは GetFormat 、書式設定情報を提供する オブジェクトを NumberFormatInfo インスタンス化して返します。
が の場合provider
、 のvalue
書式設定は、現在のカルチャの NumberFormatInfo オブジェクトに基づいて解釈null
されます。
こちらもご覧ください
適用対象
Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)
- ソース:
- 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
パラメーターで指定されている数値と等価の値。
実装
例外
value
が null
です。
value
は、style
によって指定された入力パターンに従っていません。
注釈
パラメーターは style
、解析操作を成功させるためにパラメーターで value
許可されるスタイル要素 (空白、正または負の記号、グループ区切り記号、小数点記号など) を定義します。
styles
は、列挙からのビット フラグ NumberStyles の組み合わせである必要があります。 パラメーターはstyle
、 で表される数値システム (10 進数または 16 進数) が実行時にのみ認識されるvalue
場合、または で空白または記号記号value
を禁止する場合に、16 進数の値の表現が含まれている場合に、このメソッドのオーバーロードを役立ちますvalue
。
の style
値によっては、パラメーターに value
次の要素が含まれる場合があります。
[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
に が含まれているNumberStyles.AllowHexSpecifier場合style
、パラメーターにはvalue
次の要素を含めることができます。
[ws]hexdigits[ws]
角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。
要素 | 説明 |
---|---|
ws | オプションの空白。 空白は、フラグを含む場合は のvalue 先頭に表示され、フラグが含NumberStyles.AllowLeadingWhiteまれている場合style は のvalue 末尾にNumberStyles.AllowTrailingWhite表示style できます。 |
$ | カルチャ固有の通貨記号。 の value 位置は、 パラメーターで NumberFormatInfo.CurrencyNegativePattern 示されるカルチャの プロパティと NumberFormatInfo.CurrencyPositivePattern プロパティによって provider 定義されます。 フラグが含まれている場合style は、現在のカルチャの通貨記号を にvalue NumberStyles.AllowCurrencySymbol表示できます。 |
sign | 省略可能な記号。 この記号は、 フラグを含む場合style は のvalue 先頭に表示され、フラグが含まれている場合style は のvalue 末尾にNumberStyles.AllowTrailingSign表示NumberStyles.AllowLeadingSignできます。 に フラグが含まれている場合style 、かっこを使用value して負の値をNumberStyles.AllowParentheses示すことができます。 |
数値 fractional_digits exponential_digits |
0 ~ 9 の数字のシーケンス。 fractional_digitsの場合、数字 0 のみが有効です。 |
, | カルチャ固有のグループ区切り記号。 で指定されたprovider カルチャのグループ区切り記号は、 フラグが含まれている場合style に にvalue NumberStyles.AllowThousands表示できます。 |
. | カルチャ固有の小数点記号。 によって指定されたprovider カルチャの小数点記号は、 フラグが含まれている場合style に にNumberStyles.AllowDecimalPointvalue 表示できます。 解析操作を成功させるために小数部の数字として表示できるのは、数字 0 だけです。 fractional_digits に他の数字が含まれている場合は、 FormatException がスローされます。 |
E | "e" または "E" 文字。値が指数 (指数) 表記で表されることを示します。 フラグが含まれている場合style 、パラメーターはvalue 指数表記で数値をNumberStyles.AllowExponent表すことができます。 |
hexdigits | 0 から f、または 0 から F までの 16 進数のシーケンス。 |
注意
の終端 NUL (U+0000) 文字 s
は、引数の style
値に関係なく、解析操作では無視されます。
value
数字のみを含む (スタイルにNumberStyles.None対応する) は常に正常に解析されます。 残りの NumberStyles メンバーのほとんどは、 に存在する可能性がありますが、存在する必要がない要素を value
制御します。 次の表は、 にvalue
存在する可能性がある要素に個々NumberStylesのメンバーがどのように影響するかを示しています。
NumberStyles 値 | 数字に加えて値で許可される要素 |
---|---|
None | digits 要素のみ。 |
AllowDecimalPoint | 小数点 (.) と 小数部の要素 。 |
AllowExponent | 指数表記を示す "e" または "E" 文字。 と共 にexponential_digits。 |
AllowLeadingWhite | の先頭value にある ws 要素。 |
AllowTrailingWhite | の末尾value にある ws 要素。 |
AllowLeadingSign | の先頭value にある sign 要素。 |
AllowTrailingSign | の末尾value にある sign 要素。 |
AllowParentheses | 数値を囲むかっこの形式の 符号 要素。 |
AllowThousands | グループ区切り記号 (,) 要素。 |
AllowCurrencySymbol | currency ($) 要素。 |
Currency | すべての要素。 ただし、 value 指数表記で 16 進数または数値を表すことはできません。 |
Float | の先頭または末尾にある value ws 要素、の先頭にvalue 記号を付け、小数点 (.) 記号を指定します。 パラメーターでは value 指数表記を使用することもできます。 |
Number | 、ws sign 、グループ区切り記号 (、)、および小数点 (.) 要素。 |
Any | すべての要素。 ただし、 value 16 進数を表すことはできません。 |
で特定のスタイル要素NumberStyles.AllowHexSpecifiervalue
が存在することを許可するが、必要としない他NumberStylesの値とは異なり、スタイル値は、 のvalue
個々の数値が常に 16 進文字として解釈されることを意味します。 有効な 16 進文字は、0 から 9、A から F、および a から f です。 パラメーターと組み合わせることができる他のフラグは NumberStyles.AllowLeadingWhite と style
NumberStyles.AllowTrailingWhiteのみです。 (列挙には NumberStyles 、 HexNumber両方の空白フラグを含む複合数値スタイル が含まれています)。
パラメーターは provider
実装です IFormatProvider 。 そのメソッドは GetFormat 、 の形式に NumberFormatInfo 関するカルチャ固有の value
情報を提供する オブジェクトを返します。 通常、 provider
には次のいずれかを指定できます。
CultureInfo数値書式情報を提供するカルチャを表す オブジェクト。 そのメソッドは GetFormat 、数値書式情報を NumberFormatInfo 提供する オブジェクトを返します。
NumberFormatInfo書式設定情報を提供する オブジェクト。 (の実装 GetFormat はそれ自体を返すだけです)。
メソッドを IFormatProvider 実装および使用 GetFormat してインスタンス化し、書式設定情報を提供する オブジェクトを NumberFormatInfo 返すカスタム オブジェクト。
が のnull
場合provider
、現在のNumberFormatInfoカルチャの オブジェクトが使用されます。
こちらもご覧ください
適用対象
Parse(String, NumberStyles, IFormatProvider)
- ソース:
- 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
パラメーターで指定されている数値と等価の値。
実装
例外
value
が null
です。
value
は、style
によって指定された入力パターンに従っていません。
例
次の例では、 パラメーターと provider
パラメーターのParse(String, NumberStyles, IFormatProvider)値style
のさまざまな組み合わせを使用して、 メソッドを複数呼び出します。
// 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
、 で表される数値システム (10 進数または 16 進数) が実行時にのみ認識されるvalue
場合、または で空白または記号記号value
を禁止する場合に、16 進数の値の文字列表現を含む場合に、このメソッドのオーバーロードを役立ちますvalue
。
の style
値によっては、パラメーターに value
次の要素が含まれる場合があります。
[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]
に が含まれているNumberStyles.AllowHexSpecifier場合style
、パラメーターにはvalue
次の要素を含めることができます。
[ws]hexdigits[ws]
角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。
要素 | 説明 |
---|---|
ws | オプションの空白。 空白は、フラグを含む場合は のvalue 先頭に表示され、フラグが含NumberStyles.AllowLeadingWhiteまれている場合style は のvalue 末尾にNumberStyles.AllowTrailingWhite表示style できます。 |
$ | カルチャ固有の通貨記号。 文字列内での位置は、 パラメーターで NumberFormatInfo.CurrencyNegativePattern 示されるカルチャの プロパティと NumberFormatInfo.CurrencyPositivePattern プロパティによって provider 定義されます。 フラグが含まれている場合style は、現在のカルチャの通貨記号を にvalue NumberStyles.AllowCurrencySymbol表示できます。 |
sign | 省略可能な記号。 この記号は、 フラグを含む場合style は のvalue 先頭に表示され、フラグが含まれている場合style は のvalue 末尾にNumberStyles.AllowTrailingSign表示NumberStyles.AllowLeadingSignできます。 に フラグが含まれている場合style 、かっこを使用value して負の値をNumberStyles.AllowParentheses示すことができます。 |
数値 fractional_digits exponential_digits |
0 ~ 9 の数字のシーケンス。 fractional_digitsの場合、数字 0 のみが有効です。 |
, | カルチャ固有のグループ区切り記号。 で指定されたprovider カルチャのグループ区切り記号は、 フラグが含まれている場合style に にvalue NumberStyles.AllowThousands表示できます。 |
. | カルチャ固有の小数点記号。 によって指定されたprovider カルチャの小数点記号は、 フラグが含まれている場合style に にNumberStyles.AllowDecimalPointvalue 表示できます。 解析操作を成功させるために小数部の数字として表示できるのは、数字 0 だけです。 fractional_digits に他の数字が含まれている場合は、 FormatException がスローされます。 |
E | "e" または "E" 文字。値が指数 (指数) 表記で表されることを示します。 フラグが含まれている場合style 、パラメーターはvalue 指数表記で数値をNumberStyles.AllowExponent表すことができます。 |
hexdigits | 0 から f、または 0 から F までの 16 進数のシーケンス。 |
注意
の終端 NUL (U+0000) 文字 s
は、引数の style
値に関係なく、解析操作では無視されます。
数字のみの文字列 (スタイルに NumberStyles.None 対応) は常に正常に解析されます。 残りの NumberStyles メンバーのほとんどは、入力文字列に存在する可能性がありますが、存在する必要がない要素を制御します。 次の表は、 にvalue
存在する可能性がある要素に個々NumberStylesのメンバーがどのように影響するかを示しています。
NumberStyles 値 | 数字に加えて値で許可される要素 |
---|---|
None | digits 要素のみ。 |
AllowDecimalPoint | 小数点 (.) と 小数部の要素 。 |
AllowExponent | 指数表記を示す "e" または "E" 文字。 と共 にexponential_digits。 |
AllowLeadingWhite | の先頭value にある ws 要素。 |
AllowTrailingWhite | の末尾value にある ws 要素。 |
AllowLeadingSign | の先頭value にある sign 要素。 |
AllowTrailingSign | の末尾value にある sign 要素。 |
AllowParentheses | 数値を囲むかっこの形式の 符号 要素。 |
AllowThousands | グループ区切り記号 (,) 要素。 |
AllowCurrencySymbol | currency ($) 要素。 |
Currency | すべての要素。 ただし、 value 指数表記で 16 進数または数値を表すことはできません。 |
Float | の先頭または末尾にある value ws 要素、の先頭にvalue 記号を付け、小数点 (.) 記号を指定します。 パラメーターでは value 指数表記を使用することもできます。 |
Number | 、ws sign 、グループ区切り記号 (、)、および小数点 (.) 要素。 |
Any | すべての要素。 ただし、 value 16 進数を表すことはできません。 |
重要
メソッドをParse使用して、 メソッドによってToString出力された値のBigInteger文字列表現をラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列表現では元の BigInteger 値の最上位 50 桁のみが保持され、 メソッドを Parse 使用して値を復元 BigInteger するとデータが失われる可能性があります。
で特定のスタイル要素NumberStyles.AllowHexSpecifiervalue
が存在することを許可するが、必要としない他NumberStylesの値とは異なり、スタイル値は、 のvalue
個々の数値が常に 16 進文字として解釈されることを意味します。 有効な 16 進文字は、0 から 9、A から F、および a から f です。 パラメーターと組み合わせることができる他のフラグは NumberStyles.AllowLeadingWhite と style
NumberStyles.AllowTrailingWhiteのみです。 (列挙には NumberStyles 、 HexNumber両方の空白フラグを含む複合数値スタイル が含まれています)。
注意
が 16 進数の文字列表現の場合value
、前に 16 進数として区別する装飾 (や &h
など0x
) を付けることはできません。 これにより、変換が失敗します。
が 16 進数の文字列の場合value
、メソッドは、Parse(String, NumberStyles)最初の 2 桁の 16 進数が 以上0x80
の場合、2 の補数表現を使用して格納された負の数として解釈value
します。 つまり、 メソッドは、 の最初のバイト value
の最上位ビットを符号ビットとして解釈します。 16 進文字列が正の数値として正しく解釈されるようにするには、 の最初の桁の value
値が 0 である必要があります。 たとえば、 メソッドは負の0x80
値として解釈されますが、または 0x0080
を0x080
正の値として解釈します。 次の例は、負の値と正の値を表す 16 進文字列の違いを示しています。
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 返すカスタム オブジェクト。
が のnull
場合provider
、現在のNumberFormatInfoカルチャの オブジェクトが使用されます。
こちらもご覧ください
適用対象
.NET