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)

Source:
Decoder.cs
Source:
Decoder.cs
Source:
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保存します。 データストリームを使用してアプリケーションが完了したら、 パラメーターを flushtrue 設定して、状態情報がフラッシュされるようにする必要があります。 この設定では、デコーダーはデータ ブロックの末尾にある無効なバイトを無視し、内部バッファーをクリアします。

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

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

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

適用対象

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

Source:
Decoder.cs
Source:
Decoder.cs
Source:
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保存します。 データストリームを使用してアプリケーションが完了したら、 パラメーターを flushtrue 設定して、状態情報がフラッシュされるようにする必要があります。 この設定では、デコーダーはデータ ブロックの末尾にある無効なバイトを無視し、内部バッファーをクリアします。

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

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

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

こちらもご覧ください

適用対象

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

Source:
Decoder.cs
Source:
Decoder.cs
Source:
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) です。

byteIndexbyteCount、または charIndex が 0 未満です。

または

byteindex および byteCountbytesにおいて有効な範囲を表していません。

または

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

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保存します。 データストリームを使用してアプリケーションが完了したら、 パラメーターを flushtrue 設定して、状態情報がフラッシュされるようにする必要があります。 この設定では、デコーダーはデータ ブロックの末尾にある無効なバイトを無視し、内部バッファーをクリアします。

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

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

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

こちらもご覧ください

適用対象

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

Source:
Decoder.cs
Source:
Decoder.cs
Source:
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) です。

byteIndexbyteCount、または charIndex が 0 未満です。

または

byteindex および byteCountbytesにおいて有効な範囲を表していません。

または

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

chars には、charIndex から配列の末尾までに十分なサイズがなく、結果の文字を格納できません。

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

および

FallbackDecoderExceptionFallback に設定されます。

注釈

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

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

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

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

こちらもご覧ください

適用対象