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)

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

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)

重要

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

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

public:
 virtual int GetChars(System::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)]
public virtual int GetChars(byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[<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
[<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

パラメーター

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)

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

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 未満です。

-または-

byteIndex および byteCount は、 bytes内の有効な範囲を示していません。

-または-

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

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

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

および

FallbackDecoderExceptionFallback に設定されます。

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

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)

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

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 未満です。

-または-

byteIndex および byteCount は、 bytes内の有効な範囲を示していません。

-または-

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

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

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

および

FallbackDecoderExceptionFallback に設定されます。

注釈

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

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

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

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

こちらもご覧ください

適用対象