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 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í.
- flush
- Boolean
true
Chcete-li vymazat 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, 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
Skutečný počet znaků zapsaných v umístění označeném chars
parametrem.
- 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 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
Skutečný počet znaků napsaných do chars
.
Výjimky
byteIndex
nebo byteCount
nebo je menší než charIndex
nula.
-nebo-
byteindex
byteCount
a 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
Skutečný počet znaků napsaných do chars
parametru .
Výjimky
byteIndex
nebo byteCount
nebo je menší než charIndex
nula.
-nebo-
byteindex
byteCount
a 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 .