Decoder.GetChars メソッド

定義

派生クラスでオーバーライドされると、バイトシーケンスを一連の文字にデコードします。

オーバーロード

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

派生クラスでオーバーライドされると、スパン バイトのシーケンスと内部バッファー内のすべてのバイトを、指定した文字ポインターから始めて格納される文字のセットにデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

GetChars(Byte*, Int32, Char*, Int32, Boolean)

派生クラスでオーバーライドされると、指定したバイト ポインターから始まるバイトのシーケンスと、内部バッファー内の任意のバイトを、指定した文字ポインターから始めて格納される文字のセットにデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

GetChars(Byte[], Int32, Int32, Char[], Int32)

派生クラスでオーバーライドされると、指定したバイト配列のバイト シーケンスと、内部バッファー内の任意のバイトを、指定した文字配列にデコードします。

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

派生クラスでオーバーライドされると、指定したバイト配列のバイト シーケンスと、内部バッファー内の任意のバイトを、指定した文字配列にデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

ソース:
Decoder.cs
ソース:
Decoder.cs
ソース:
Decoder.cs

派生クラスでオーバーライドされると、スパン バイトのシーケンスと内部バッファー内のすべてのバイトを、指定した文字ポインターから始めて格納される文字のセットにデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

public:
 virtual int GetChars(ReadOnlySpan<System::Byte> bytes, Span<char> chars, bool flush);
public virtual int GetChars (ReadOnlySpan<byte> bytes, Span<char> chars, bool flush);
abstract member GetChars : ReadOnlySpan<byte> * Span<char> * bool -> int
override this.GetChars : ReadOnlySpan<byte> * Span<char> * bool -> int
Public Overridable Function GetChars (bytes As ReadOnlySpan(Of Byte), chars As Span(Of Char), flush As Boolean) As Integer

パラメーター

bytes
ReadOnlySpan<Byte>

デコードするバイト スパン。

chars
Span<Char>

結果の文字セットを書き込むスパン。

flush
Boolean

変換後にデコーダーの内部状態をクリアする true。それ以外の場合は、falseします。

戻り値

chars パラメーターによって示されるスパンで書き込まれた実際の文字数。

注釈

Decoder オブジェクトは、GetCharsへの呼び出しの間に状態を保存します。 データ ストリームを使用してアプリケーションが完了したら、flush パラメーターを true に設定して、状態情報がフラッシュされるようにする必要があります。 この設定では、デコーダーはデータ ブロックの末尾にある無効なバイトを無視し、内部バッファーをクリアします。

結果の文字を格納するために必要 GetChars 正確なスパン サイズを計算するには、アプリケーションで GetCharCountを使用する必要があります。

flushfalseに設定して GetChars が呼び出されると、デコーダーはデータ ブロックの末尾にある末尾のバイトを内部バッファーに格納し、次のデコード操作で使用します。 アプリケーションは、同じブロックで GetChars を呼び出す直前に、データ ブロックの GetCharCount を呼び出して、前のブロックの後続バイトが計算に含まれるようにする必要があります。

アプリケーションで入力ストリームの多数のセグメントを変換する場合は、Convert メソッドの使用を検討してください。 GetChars は、出力スパンが十分な大きさでない場合は例外をスローしますが、出力配列で少なくとも 2 文字が許可されていれば、Convert はできるだけ多くの領域を埋め、書き込まれたバイト数と書き込まれた文字を返します。 その他のコメントについては、Encoding.GetChars トピックも参照してください。

適用対象

GetChars(Byte*, Int32, Char*, Int32, Boolean)

ソース:
Decoder.cs
ソース:
Decoder.cs
ソース:
Decoder.cs

重要

この API は CLS 準拠ではありません。

派生クラスでオーバーライドされると、指定したバイト ポインターから始まるバイトのシーケンスと、内部バッファー内の任意のバイトを、指定した文字ポインターから始めて格納される文字のセットにデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

public:
 virtual int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[<System.CLSCompliant(false)>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int

パラメーター

bytes
Byte*

デコードする最初のバイトへのポインター。

byteCount
Int32

デコードするバイト数。

chars
Char*

結果の文字セットの書き込みを開始する位置へのポインター。

charCount
Int32

書き込む最大文字数。

flush
Boolean

変換後にデコーダーの内部状態をクリアする true。それ以外の場合は、falseします。

戻り値

chars パラメーターによって示される場所に書き込まれた実際の文字数。

属性

例外

bytesnull (Nothing) です。

-又は-

charsnull (Nothing) です。

byteCount または charCount が 0 未満です。

charCount は、結果の文字数よりも少なくなります。

フォールバックが発生しました (詳細については、「.NETでの文字エンコードの 」を参照してください)

-そして-

FallbackDecoderExceptionFallbackに設定されます。

注釈

Decoder オブジェクトは、GetCharsへの呼び出しの間に状態を保存します。 データ ストリームを使用してアプリケーションが完了したら、flush パラメーターを true に設定して、状態情報がフラッシュされるようにする必要があります。 この設定では、デコーダーはデータ ブロックの末尾にある無効なバイトを無視し、内部バッファーをクリアします。

結果の文字 GetChars 格納するために必要な正確なバッファー サイズを計算するには、アプリケーションで GetCharCountを使用する必要があります。

flushfalseに設定して GetChars が呼び出されると、デコーダーはデータ ブロックの末尾にある末尾のバイトを内部バッファーに格納し、次のデコード操作で使用します。 アプリケーションは、同じブロックで GetChars を呼び出す直前に、データ ブロックの GetCharCount を呼び出して、前のブロックの後続バイトが計算に含まれるようにする必要があります。

アプリケーションで入力ストリームの多数のセグメントを変換する場合は、Convert メソッドの使用を検討してください。 出力バッファーが十分な大きさでない場合、GetChars は例外をスローしますが、出力配列で少なくとも 2 文字が許可されていれば、Convert はできるだけ多くの領域を埋め、書き込まれたバイト数と文字を返します。 その他のコメントについては、Encoding.GetChars トピックも参照してください。

こちらもご覧ください

適用対象

GetChars(Byte[], Int32, Int32, Char[], Int32)

ソース:
Decoder.cs
ソース:
Decoder.cs
ソース:
Decoder.cs

派生クラスでオーバーライドされると、指定したバイト配列のバイト シーケンスと、内部バッファー内の任意のバイトを、指定した文字配列にデコードします。

public:
 abstract int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public abstract int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
abstract member GetChars : byte[] * int * int * char[] * int -> int
Public MustOverride Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer

パラメーター

bytes
Byte[]

デコードするバイトシーケンスを含むバイト配列。

byteIndex
Int32

デコードする最初のバイトのインデックス。

byteCount
Int32

デコードするバイト数。

chars
Char[]

結果の文字セットを格納する文字配列。

charIndex
Int32

結果の文字セットの書き込みを開始する位置のインデックス。

戻り値

charsに書き込まれた実際の文字数。

例外

bytesnull (Nothing) です。

-又は-

charsnull (Nothing) です。

byteIndex または byteCount または charIndex が 0 未満です。

-又は-

byteindexbyteCount は、bytesで有効な範囲を示していません。

-又は-

charIndex は、charsで有効なインデックスではありません。

chars は、charIndex から配列の末尾まで、結果の文字を格納するのに十分な容量がありません。

フォールバックが発生しました (詳細については、「.NETでの文字エンコードの 」を参照してください)

-そして-

FallbackDecoderExceptionFallbackに設定されます。

次の例では、バイト配列から要素の範囲をデコードし、Unicode 文字配列に格納する方法を示します。 GetCharCount メソッドは、デコードされた要素を配列 bytesに格納するために必要な文字数を計算するために使用されます。 GetChars メソッドは、バイト配列内の指定された要素をデコードし、新しい文字配列に格納します。

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {85,0,110,0,105,0,99,0,111,0,100,0,101,0};
   Decoder^ uniDecoder = Encoding::Unicode->GetDecoder();
   int charCount = uniDecoder->GetCharCount( bytes, 0, bytes->Length );
   chars = gcnew array<Char>(charCount);
   int charsDecodedCount = uniDecoder->GetChars( bytes, 0, bytes->Length, chars, 0 );
   Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
   Console::Write( "Decoded chars: " );
   IEnumerator^ myEnum = chars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c = safe_cast<Char>(myEnum->Current);
      Console::Write( "[{0}]", c.ToString() );
   }

   Console::WriteLine();
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
        };

        Decoder uniDecoder = Encoding.Unicode.GetDecoder();

        int charCount = uniDecoder.GetCharCount(bytes, 0, bytes.Length);
        chars = new Char[charCount];
        int charsDecodedCount = uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/
Imports System.Text

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0 _
        }
        
        Dim uniDecoder As Decoder = Encoding.Unicode.GetDecoder()
        
        Dim charCount As Integer = uniDecoder.GetCharCount(bytes, 0, bytes.Length)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = _
            uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0)
        
        Console.WriteLine( _
            "{0} characters used to decode bytes.", _
            charsDecodedCount _
        )
        
        Console.Write("Decoded chars: ")
        Dim c As Char
        For Each c In  chars
            Console.Write("[{0}]", c)
        Next c
        Console.WriteLine()
    End Sub
End Class

'This code example produces the following output.
'
'7 characters used to decode bytes.
'Decoded chars: [U][n][i][c][o][d][e]
'

注釈

Decoder オブジェクトは、GetCharsへの呼び出しの間に状態を保存します。 データ ストリームを使用してアプリケーションが完了したら、flush パラメーターを true に設定して、状態情報がフラッシュされるようにする必要があります。 この設定では、デコーダーはデータ ブロックの末尾にある無効なバイトを無視し、内部バッファーをクリアします。

結果の文字を格納するために必要 GetChars 正確な配列サイズを計算するには、アプリケーションで GetCharCountを使用する必要があります。

flushfalseに設定して GetChars が呼び出されると、デコーダーはデータ ブロックの末尾にある末尾のバイトを内部バッファーに格納し、次のデコード操作で使用します。 アプリケーションは、同じブロックで GetChars を呼び出す直前に、データ ブロックの GetCharCount を呼び出して、前のブロックの後続バイトが計算に含まれるようにする必要があります。

アプリケーションで入力ストリームの多数のセグメントを変換する場合は、Convert メソッドの使用を検討してください。 出力バッファーが十分な大きさでない場合、GetChars は例外をスローしますが、出力配列で少なくとも 2 文字が許可されていれば、Convert はできるだけ多くの領域を埋め、書き込まれたバイト数と文字を返します。 その他のコメントについては、Encoding.GetChars トピックも参照してください。

こちらもご覧ください

適用対象

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

ソース:
Decoder.cs
ソース:
Decoder.cs
ソース:
Decoder.cs

派生クラスでオーバーライドされると、指定したバイト配列のバイト シーケンスと、内部バッファー内の任意のバイトを、指定した文字配列にデコードします。 パラメーターは、変換後にデコーダーの内部状態をクリアするかどうかを示します。

public:
 virtual int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex, bool flush);
public virtual int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex, bool flush);
abstract member GetChars : byte[] * int * int * char[] * int * bool -> int
override this.GetChars : byte[] * int * int * char[] * int * bool -> int
Public Overridable Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer, flush As Boolean) As Integer

パラメーター

bytes
Byte[]

デコードするバイトシーケンスを含むバイト配列。

byteIndex
Int32

デコードする最初のバイトのインデックス。

byteCount
Int32

デコードするバイト数。

chars
Char[]

結果の文字セットを格納する文字配列。

charIndex
Int32

結果の文字セットの書き込みを開始する位置のインデックス。

flush
Boolean

変換後にデコーダーの内部状態をクリアする true。それ以外の場合は、falseします。

戻り値

chars パラメーターに書き込まれた実際の文字数。

例外

bytesnull (Nothing) です。

-又は-

charsnull (Nothing) です。

byteIndex または byteCount または charIndex が 0 未満です。

-又は-

byteindexbyteCount は、bytesで有効な範囲を示していません。

-又は-

charIndex は、charsで有効なインデックスではありません。

chars は、charIndex から配列の末尾まで、結果の文字を格納するのに十分な容量がありません。

フォールバックが発生しました (詳細については、「.NETでの文字エンコードの 」を参照してください)

-そして-

FallbackDecoderExceptionFallbackに設定されます。

注釈

Decoder オブジェクトは、GetCharsへの呼び出しの間に状態を保存します。 データ ストリームを使用してアプリケーションが完了したら、flush パラメーターを true に設定して、状態情報がフラッシュされるようにする必要があります。 この設定では、デコーダーはデータ ブロックの末尾にある無効なバイトを無視し、内部バッファーをクリアします。

結果の文字を格納するために必要 GetChars 正確な配列サイズを計算するには、アプリケーションで GetCharCountを使用する必要があります。

flushfalseに設定して GetChars が呼び出されると、デコーダーはデータ ブロックの末尾にある末尾のバイトを内部バッファーに格納し、次のデコード操作で使用します。 アプリケーションは、同じブロックで GetChars を呼び出す直前に、データ ブロックの GetCharCount を呼び出して、前のブロックの後続バイトが計算に含まれるようにする必要があります。

アプリケーションで入力ストリームの多数のセグメントを変換する場合は、Convert メソッドの使用を検討してください。 出力バッファーが十分な大きさでない場合、GetChars は例外をスローしますが、出力配列で少なくとも 2 文字が許可されていれば、Convert はできるだけ多くの領域を埋め、書き込まれたバイト数と文字を返します。 その他のコメントについては、Encoding.GetChars トピックも参照してください。

こちらもご覧ください

適用対象