Decoder.GetChars Metoda

Definice

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů do sady znaků.

Přetížení

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

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů typu span a libovolné bajty ve vnitřní vyrovnávací paměti do sady znaků, které jsou uloženy počínaje zadaným ukazatelem znaku. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů počínaje zadaným bajtovým ukazatelem a všemi bajty ve vnitřní vyrovnávací paměti do sady znaků, které jsou uloženy počínaje zadaným ukazatelem znaku. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě dekóduje sekvenci bajtů ze zadaného bajtového pole a bajtů v interní vyrovnávací paměti do zadaného pole znaků.

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

Při přepsání v odvozené třídě dekóduje sekvenci bajtů ze zadaného bajtového pole a bajtů v interní vyrovnávací paměti do zadaného pole znaků. Parametr určuje, jestli se má po převodu vymazat interní stav dekodéru.

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

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů typu span a libovolné bajty ve vnitřní vyrovnávací paměti do sady znaků, které jsou uloženy počínaje zadaným ukazatelem znaku. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru.

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

Parametry

bytes
ReadOnlySpan<Byte>

Rozsah bajtů k dekódování.

chars
Span<Char>

Rozsah pro zápis výsledné sady znaků.

flush
Boolean

true Chcete-li vymazat vnitřní stav dekodéru po převodu; v opačném případě false .

Návraty

Int32

Skutečný počet znaků zapsaných v rozsahu, který je určen chars parametrem.

Poznámky

Pamatujte, že Decoder objekt ukládá stav mezi voláními GetChars . Když se aplikace provede s datovým proudem dat, měl by parametr nastavit na flush true , aby se zajistilo vyprázdnění informací o stavu. S tímto nastavením dekodér ignoruje neplatné bajty na konci bloku dat a vymaže vnitřní vyrovnávací paměť.

Chcete-li vypočítat přesnou velikost rozsahu, který GetChars vyžaduje uložení výsledných znaků, aplikace by měla použít GetCharCount .

Pokud GetChars je volána s flush nastavenou na false , dekodér ukládá koncové bajty na konci bloku dat ve vnitřní vyrovnávací paměti a použije je při další operaci dekódování. Aplikace by měla zavolat GetCharCount na blok dat hned před voláním GetChars na stejný blok, aby všechny koncové bajty z předchozího bloku byly zahrnuty do výpočtu.

Pokud je aplikace převedena z mnoha segmentů vstupního datového proudu, zvažte použití Convert metody. GetChars vyvolá výjimku, pokud výstupní rozpětí není dostatečně velké, ale Convert vyplní tolik místa jako možnou a vrátí načtené bajty a zápisy znaků, pokud výstupní pole umožňuje alespoň dva znaky. Další poznámky najdete také v Encoding.GetChars tématu.

Platí pro

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

Důležité

Toto rozhraní API neodpovídá specifikaci CLS.

Při přepsání v odvozené třídě Dekóduje sekvenci bajtů počínaje zadaným bajtovým ukazatelem a všemi bajty ve vnitřní vyrovnávací paměti do sady znaků, které jsou uloženy počínaje zadaným ukazatelem znaku. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru.

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);
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
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

Parametry

bytes
Byte*

Ukazatel na první bajt k dekódování.

byteCount
Int32

Počet bajtů, které se mají dekódovat.

chars
Char*

Ukazatel na umístění, kde má začít zapisovat výslednou sadu znaků.

charCount
Int32

Maximální počet znaků, které mají být zapsány.

flush
Boolean

true Chcete-li vymazat vnitřní stav dekodéru po převodu; v opačném případě false .

Návraty

Int32

Skutečný počet znaků zapsaných v umístění označeném chars parametrem.

Atributy

Výjimky

bytes je null ( Nothing ).

-nebo-

chars je null ( Nothing ).

byteCount nebo charCount je menší než nula.

charCount je menší než výsledný počet znaků.

Došlo k záložnímu stavu (další informace najdete v tématu Kódování znaků v rozhraní .NET).

-and-

Fallback je nastavená na DecoderExceptionFallback .

Poznámky

Pamatujte, že Decoder objekt ukládá stav mezi voláními GetChars . Když se aplikace provede s datovým proudem dat, měl by parametr nastavit na flush true , aby se zajistilo vyprázdnění informací o stavu. S tímto nastavením dekodér ignoruje neplatné bajty na konci bloku dat a vymaže vnitřní vyrovnávací paměť.

Chcete-li vypočítat přesnou velikost vyrovnávací paměti, která GetChars vyžaduje uložení výsledných znaků, měla by aplikace použít GetCharCount .

Pokud GetChars je volána s flush nastavenou na false , dekodér ukládá koncové bajty na konci bloku dat ve vnitřní vyrovnávací paměti a použije je při další operaci dekódování. Aplikace by měla volat na blok dat bezprostředně před voláním ve stejném bloku, aby do výpočtu byly zahrnuty všechny koncové bajty GetCharCount GetChars z předchozího bloku.

Pokud má vaše aplikace převést mnoho segmentů vstupního datového proudu, zvažte použití Convert metody . GetChars vyvolá výjimku, pokud výstupní vyrovnávací paměť není dostatečně velká, ale vyplní co nejvíce místa a vrátí přečtené bajty a zapsané znaky za předpokladu, že výstupní pole umožňuje alespoň Convert dva znaky. Další komentáře Encoding.GetChars najdete také v tématu .

Viz také

Platí pro

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

Při přepsání v odvozené třídě dekóduje sekvenci bajtů ze zadaného bajtového pole a bajtů v interní vyrovnávací paměti do zadaného pole znaků.

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

Parametry

bytes
Byte[]

Pole bajtů obsahující sekvenci bajtů k dekódování.

byteIndex
Int32

Index prvního byte, který se má dekódovat.

byteCount
Int32

Počet bajtů k dekódování.

chars
Char[]

Pole znaků, které má obsahovat výslednou sadu znaků.

charIndex
Int32

Index, ve kterém se má začít psát výsledná sada znaků.

Návraty

Int32

Skutečný počet znaků napsaných do chars .

Výjimky

bytes je null ( Nothing ).

-nebo-

chars je null ( Nothing ).

byteIndex nebo byteCount nebo je menší než charIndex nula.

-nebo-

byteindexbyteCounta nezak označení platného rozsahu v bytes .

-nebo-

charIndex není platným indexem v chars .

chars nemá dostatek kapacity od do konce pole, aby charIndex se přizpůsobilo výsledným znakům.

Došlo k záložnímu stavu (další informace najdete v tématu Kódování znaků v rozhraní .NET).

-and-

Fallback je nastavená na DecoderExceptionFallback .

Příklady

Následující příklad ukazuje, jak dekódovat rozsah prvků z pole bajtů a uložit je do pole znaků Unicode. Metoda slouží k výpočtu počtu znaků potřebných k uložení dekódovaných GetCharCount prvků do pole bytes . Metoda dekóduje zadané prvky v poli bajtů a uloží GetChars je do nového pole znaků.

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]
'

Poznámky

Mějte na Decoder paměti, že objekt ukládá stav mezi voláními GetChars . Když je aplikace hotová s datovým proudem, měla by parametr nastavit na , aby se informace o stavu flush true vyprázdnil. Při tomto nastavení dekodér ignoruje neplatné bajty na konci datového bloku a vymaže interní vyrovnávací paměť.

K výpočtu přesné velikosti GetChars pole, která vyžaduje uložení výsledných znaků, by aplikace měla použít GetCharCount .

Pokud se volá s parametrem nastaveným na , dekodér uloží koncové bajty na konci datového bloku do interní vyrovnávací paměti a použije je v další operaci GetChars flush false dekódování. Aplikace by měla volat na blok dat bezprostředně před voláním ve stejném bloku, aby do výpočtu byly zahrnuty všechny koncové bajty GetCharCount GetChars z předchozího bloku.

Pokud má vaše aplikace převést mnoho segmentů vstupního datového proudu, zvažte použití Convert metody . GetChars vyvolá výjimku, pokud výstupní vyrovnávací paměť není dostatečně velká, ale vyplní co nejvíce místa a vrátí přečtené bajty a zapsané znaky za předpokladu, že výstupní pole umožňuje alespoň Convert dva znaky. Další komentáře Encoding.GetChars najdete také v tématu .

Viz také

Platí pro

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

Při přepsání v odvozené třídě dekóduje sekvenci bajtů ze zadaného bajtového pole a bajtů v interní vyrovnávací paměti do zadaného pole znaků. Parametr určuje, jestli se má po převodu vymazat interní stav dekodéru.

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

Parametry

bytes
Byte[]

Pole bajtů obsahující sekvenci bajtů k dekódování.

byteIndex
Int32

Index prvního byte, který se má dekódovat.

byteCount
Int32

Počet bajtů k dekódování.

chars
Char[]

Pole znaků, které má obsahovat výslednou sadu znaků.

charIndex
Int32

Index, ve kterém se má začít psát výsledná sada znaků.

flush
Boolean

true vymazání interního stavu dekodéru po převodu; v opačném případě false .

Návraty

Int32

Skutečný počet znaků napsaných do chars parametru .

Výjimky

bytes je null ( Nothing ).

-nebo-

chars je null ( Nothing ).

byteIndex nebo byteCount nebo je menší než charIndex nula.

-nebo-

byteindexbyteCounta nezak označení platného rozsahu v bytes .

-nebo-

charIndex není platným indexem v chars .

chars nemá dostatek kapacity od do konce pole, aby charIndex se přizpůsobilo výsledným znakům.

Došlo k záložnímu stavu (další informace najdete v tématu Kódování znaků v rozhraní .NET).

-and-

Fallback je nastavená na DecoderExceptionFallback .

Poznámky

Mějte na Decoder paměti, že objekt ukládá stav mezi voláními GetChars . Když je aplikace hotová s datovým proudem, měla by parametr nastavit na , aby se informace o stavu flush true vyprázdnil. Při tomto nastavení dekodér ignoruje neplatné bajty na konci datového bloku a vymaže interní vyrovnávací paměť.

K výpočtu přesné velikosti GetChars pole, která vyžaduje uložení výsledných znaků, by aplikace měla použít GetCharCount .

Pokud se volá s parametrem nastaveným na , dekodér uloží koncové bajty na konci datového bloku do interní vyrovnávací paměti a použije je v další operaci GetChars flush false dekódování. Aplikace by měla volat na blok dat bezprostředně před voláním ve stejném bloku, aby do výpočtu byly zahrnuty všechny koncové bajty GetCharCount GetChars z předchozího bloku.

Pokud má vaše aplikace převést mnoho segmentů vstupního datového proudu, zvažte použití Convert metody . GetChars vyvolá výjimku, pokud výstupní vyrovnávací paměť není dostatečně velká, ale vyplní co nejvíce místa a vrátí přečtené bajty a zapsané znaky za předpokladu, že výstupní pole umožňuje alespoň Convert dva znaky. Další komentáře Encoding.GetChars najdete také v tématu .

Viz také

Platí pro