Decoder.GetChars Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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í.
- 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
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
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
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.