Decoder.GetChars Metoda

Definice

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

Přetížení

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

Při přepsání v odvozené třídě dekóduje posloupnost span bajtů a všech bajtů v interní vyrovnávací paměti do sady znaků, které jsou uloženy počínaje zadaným ukazatelem znaku. Parametr určuje, zda má být po převodu vymazán vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů počínaje zadaným bajtovým ukazatelem a všemi bajty v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele znaků. Parametr určuje, zda má být po převodu vymazán vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadané bajtové pole a všechny bajty v interní vyrovnávací paměti do zadané znakové matice.

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadané bajtové pole a všechny bajty v interní vyrovnávací paměti do zadané znakové matice. Parametr určuje, zda má být po převodu vymazán vnitřní stav dekodéru.

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

Při přepsání v odvozené třídě dekóduje posloupnost span bajtů a všech bajtů v interní vyrovnávací paměti do sady znaků, které jsou uloženy počínaje zadaným ukazatelem znaku. Parametr určuje, zda má být po převodu vymazán 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>

Bajtové rozpětí k dekódování.

chars
Span<Char>

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

flush
Boolean

truevymazat vnitřní stav dekodéru po převodu; v opačném případě . false

Návraty

Skutečný počet znaků zapsaných v rozsahu určeném parametrem chars .

Poznámky

Mějte na Decoder paměti, že objekt ukládá stav mezi voláními GetChars. Po dokončení aplikace s datovým proudem by měl parametr nastavit flush tak, aby true se zajistilo, že informace o stavu jsou vyprázdněné. 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 rozpětí, která GetChars vyžaduje uložení výsledných znaků, by aplikace měla použít GetCharCount.

Pokud GetChars je volána s nastavenou flushfalsena , dekodér ukládá koncové bajty na konci datového bloku v interní vyrovnávací paměti a používá je v další dekódovací operaci. Aplikace by měla volat GetCharCount blok dat bezprostředně před voláním GetChars do stejného bloku, aby se do výpočtu zahrnuly všechny koncové bajty 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 rozsah výstupu není dostatečně velký, ale Convert vyplní co nejvíce místa a vrátí zapsaných bajtů čtení a znaků, za předpokladu, že výstupní pole umožňuje alespoň dva znaky. Další komentáře 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 posloupnost bajtů počínaje zadaným bajtovým ukazatelem a všemi bajty v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele znaků. Parametr určuje, zda má být po převodu vymazán vnitřní stav dekodéru.

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

Parametry

bytes
Byte*

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

byteCount
Int32

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

chars
Char*

Ukazatel na umístění, ve kterém chcete začít psát výslednou sadu znaků.

charCount
Int32

Maximální počet znaků k zápisu.

flush
Boolean

truevymazat vnitřní stav dekodéru po převodu; v opačném případě . false

Návraty

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

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 použití (další informace najdete v tématu Kódování znaků v .NET).

a

Fallback je nastaveno na DecoderExceptionFallback.

Poznámky

Mějte na Decoder paměti, že objekt ukládá stav mezi voláními GetChars. Po dokončení aplikace s datovým proudem by měl parametr nastavit flush tak, aby true se zajistilo, že informace o stavu jsou vyprázdněné. 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 vyrovnávací paměti, která GetChars vyžaduje uložení výsledných znaků, by aplikace měla použít GetCharCount.

Pokud GetChars je volána s nastavenou flushfalsena , dekodér ukládá koncové bajty na konci datového bloku v interní vyrovnávací paměti a používá je v další dekódovací operaci. Aplikace by měla volat GetCharCount blok dat bezprostředně před voláním GetChars do stejného bloku, aby se do výpočtu zahrnuly všechny koncové bajty 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 Convert vyplní co nejvíce místa a vrátí zapisované bajty a znaky, za předpokladu, že výstupní pole umožňuje alespoň dva znaky. Další komentáře najdete také v Encoding.GetChars tématu.

Viz také

Platí pro

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadané bajtové pole a všechny bajty v interní vyrovnávací paměti do zadané znakové matice.

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

Bajtové pole obsahující posloupnost bajtů k dekódování.

byteIndex
Int32

Index prvního bajtu pro dekódování.

byteCount
Int32

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

chars
Char[]

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

charIndex
Int32

Index, na kterém chcete začít psát výslednou sadu znaků.

Návraty

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

Výjimky

bytes je null (Nothing).

nebo

chars je null (Nothing).

byteIndex nebo byteCountcharIndex je menší než nula.

nebo

byteIndex a byteCount neoznamujte platný rozsah v bytes.

nebo

charIndex není platný index v charssouboru .

chars nemá dostatečnou kapacitu od charIndex konce pole, aby vyhovoval výsledným znakům.

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

a

Fallback je nastaveno na DecoderExceptionFallback.

Příklady

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

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. Po dokončení aplikace s datovým proudem by měl parametr nastavit flush tak, aby true se zajistilo, že informace o stavu jsou vyprázdněné. 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 pole, která GetChars vyžaduje uložení výsledných znaků, by aplikace měla použít GetCharCount.

Pokud GetChars je volána s nastavenou flushfalsena , dekodér ukládá koncové bajty na konci datového bloku v interní vyrovnávací paměti a používá je v další dekódovací operaci. Aplikace by měla volat GetCharCount blok dat bezprostředně před voláním GetChars do stejného bloku, aby se do výpočtu zahrnuly všechny koncové bajty 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 Convert vyplní co nejvíce místa a vrátí zapisované bajty a znaky, za předpokladu, že výstupní pole umožňuje alespoň dva znaky. Další komentáře najdete také v Encoding.GetChars tématu.

Viz také

Platí pro

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

Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadané bajtové pole a všechny bajty v interní vyrovnávací paměti do zadané znakové matice. Parametr určuje, zda má být po převodu vymazán vnitřní 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[]

Bajtové pole obsahující posloupnost bajtů k dekódování.

byteIndex
Int32

Index prvního bajtu pro dekódování.

byteCount
Int32

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

chars
Char[]

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

charIndex
Int32

Index, na kterém chcete začít psát výslednou sadu znaků.

flush
Boolean

truevymazat vnitřní stav dekodéru po převodu; v opačném případě . false

Návraty

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

Výjimky

bytes je null (Nothing).

nebo

chars je null (Nothing).

byteIndex nebo byteCountcharIndex je menší než nula.

nebo

byteIndex a byteCount neoznamujte platný rozsah v bytes.

nebo

charIndex není platný index v charssouboru .

chars nemá dostatečnou kapacitu od charIndex konce pole, aby vyhovoval výsledným znakům.

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

a

Fallback je nastaveno na DecoderExceptionFallback.

Poznámky

Mějte na Decoder paměti, že objekt ukládá stav mezi voláními GetChars. Po dokončení aplikace s datovým proudem by měl parametr nastavit flush tak, aby true se zajistilo, že informace o stavu jsou vyprázdněné. 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 pole, která GetChars vyžaduje uložení výsledných znaků, by aplikace měla použít GetCharCount.

Pokud GetChars je volána s nastavenou flushfalsena , dekodér ukládá koncové bajty na konci datového bloku v interní vyrovnávací paměti a používá je v další dekódovací operaci. Aplikace by měla volat GetCharCount blok dat bezprostředně před voláním GetChars do stejného bloku, aby se do výpočtu zahrnuly všechny koncové bajty 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 Convert vyplní co nejvíce místa a vrátí zapisované bajty a znaky, za předpokladu, že výstupní pole umožňuje alespoň dva znaky. Další komentáře najdete také v Encoding.GetChars tématu.

Viz také

Platí pro