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 posloupnost bajtů span a všech bajtů v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele 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 posloupnost bajtů začínající na zadaném bajtovém ukazateli a všechny bajty v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele znaků. 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 posloupnost bajtů ze zadaného pole bajtů a všech bajtů v interní vyrovnávací paměti do zadané pole znaků. |
GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného pole bajtů a všech bajtů v interní vyrovnávací paměti do zadané pole znaků. Parametr určuje, zda se má po převodu vymazat vnitřní stav dekodéru. |
GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
Při přepsání v odvozené třídě dekóduje posloupnost bajtů span a všech bajtů v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele 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>
Bajtové rozpětí pro dekódování.
- flush
- Boolean
true
vyčistit vnitřní stav dekodéru po převodu; v opačném případě . false
Návraty
Skutečný počet znaků napsaný v rozsahu určeném parametrem chars
.
Poznámky
Nezapomeňte, že Decoder objekt ukládá stav mezi voláními objektu GetChars. Když je aplikace hotová s datovým proudem, měla by nastavit flush
parametr na hodnotu, true
aby se zajistilo, že se informace o stavu vyprázdní. 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 rozsahu, která GetChars
vyžaduje uložení výsledných znaků, by aplikace měla použít GetCharCount.
Pokud GetChars
je volána s flush
nastavenou na false
, dekodér uloží koncové bajty na konci datového bloku do interní vyrovnávací paměti a použije je v další dekódovací operaci. Aplikace by měla volat GetCharCount
na blok dat bezprostředně před voláním GetChars
stejného bloku, aby všechny koncové bajty z předchozího bloku byly zahrnuty do výpočtu.
Pokud má vaše aplikace převést mnoho segmentů vstupního streamu, zvažte použití Convert metody . GetChars vyvolá výjimku, pokud výstupní rozsah není dostatečně velký, ale Convert zaplní co nejvíce místa a vrátí přečtené bajty a zapsané znaky za předpokladu, že pole výstupu umožňuje alespoň dva znaky. Další komentáře najdete také v Encoding.GetChars tématu.
Platí pro
GetChars(Byte*, Int32, Char*, Int32, Boolean)
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
Při přepsání v odvozené třídě dekóduje posloupnost bajtů začínající na zadaném bajtovém ukazateli a všechny bajty v interní vyrovnávací paměti do sady znaků, které jsou uloženy od zadaného ukazatele znaků. 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);
[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
Parametry
- bytes
- Byte*
Ukazatel na první bajt, který chcete dekódovat.
- byteCount
- Int32
Počet bajtů k dekódování.
- chars
- Char*
Ukazatel na umístění, na kterém chcete začít psát výslednou sadu znaků.
- charCount
- Int32
Maximální počet znaků, které se mají napsat.
- flush
- Boolean
true
vyčistit vnitřní stav dekodéru po převodu; v opačném případě . false
Návraty
Skutečný počet znaků napsaný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 náhradnímu řešení (další informace najdete v tématu Kódování znaků v .NET).
-A-
Fallback je nastavená na DecoderExceptionFallbackhodnotu .
Poznámky
Nezapomeňte, že Decoder objekt ukládá stav mezi voláními objektu GetChars. Když je aplikace hotová s datovým proudem, měla by nastavit flush
parametr na hodnotu, true
aby se zajistilo, že se informace o stavu vyprázdní. 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
je nutná k uložení výsledných znaků, by aplikace měla použít GetCharCount.
Pokud GetChars
je volána s flush
nastavenou na false
, dekodér uloží koncové bajty na konci datového bloku do interní vyrovnávací paměti a použije je v další dekódovací operaci. Aplikace by měla volat GetCharCount
na blok dat bezprostředně před voláním GetChars
stejného bloku, aby všechny koncové bajty z předchozího bloku byly zahrnuty do výpočtu.
Pokud má vaše aplikace převést mnoho segmentů vstupního streamu, zvažte použití Convert metody . GetChars vyvolá výjimku, pokud výstupní vyrovnávací paměť není dostatečně velká, ale Convert zaplní 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ň dva znaky. Další komentáře najdete také v Encoding.GetChars tématu.
Viz také
Platí pro
GetChars(Byte[], Int32, Int32, Char[], Int32)
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného pole bajtů a všech bajtů v interní vyrovnávací paměti do zadané 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í posloupnost bajtů, které se mají dekódovat.
- byteIndex
- Int32
Index prvního bajtu, 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ů zapsaných do chars
.
Výjimky
byteIndex
nebo byteCount
charIndex
je menší než nula.
-nebo-
byteindex
a byteCount
neoznamujte platnou oblast v bytes
souboru .
-nebo-
charIndex
není platný index v nástroji chars
.
chars
nemá dostatečnou kapacitu od charIndex
konce pole pro umístění výsledných znaků.
Došlo k náhradnímu řešení (další informace najdete v tématu Kódování znaků v .NET).
-A-
Fallback je nastavená na DecoderExceptionFallbackhodnotu .
Příklady
Následující příklad ukazuje, jak dekódovat oblast prvků z pole bajtů 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é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
Nezapomeňte, že Decoder objekt ukládá stav mezi voláními objektu GetChars. Když je aplikace hotová s datovým proudem, měla by nastavit flush
parametr na hodnotu, true
aby se zajistilo, že se informace o stavu vyprázdní. 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
je nutná k uložení výsledných znaků, by aplikace měla použít GetCharCount.
Pokud GetChars
je volána s flush
nastavenou na false
, dekodér uloží koncové bajty na konci datového bloku do interní vyrovnávací paměti a použije je v další dekódovací operaci. Aplikace by měla volat GetCharCount
na blok dat bezprostředně před voláním GetChars
stejného bloku, aby všechny koncové bajty z předchozího bloku byly zahrnuty do výpočtu.
Pokud má vaše aplikace převést mnoho segmentů vstupního streamu, zvažte použití Convert metody . GetChars vyvolá výjimku, pokud výstupní vyrovnávací paměť není dostatečně velká, ale Convert zaplní 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ň dva znaky. Další komentáře najdete také v Encoding.GetChars tématu.
Viz také
Platí pro
GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
- Zdroj:
- Decoder.cs
Při přepsání v odvozené třídě dekóduje posloupnost bajtů ze zadaného pole bajtů a všechny bajty v interní vyrovnávací paměti do zadaného pole znaků. Parametr určuje, zda se má vymazat vnitřní stav dekodéru po převodu.
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í posloupnost bajtů k dekódování.
- byteIndex
- Int32
Index prvního bajtu k dekódování.
- 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 chcete začít psát výslednou sadu znaků.
- flush
- Boolean
true
k vymazání vnitřního stavu 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 byteCount
charIndex
je menší než nula.
-nebo-
byteindex
a byteCount
neoznamujte platnou oblast v bytes
souboru .
-nebo-
charIndex
není platný index v nástroji chars
.
chars
nemá dostatečnou kapacitu od charIndex
do konce pole pro umístění výsledných znaků.
Došlo k náhradnímu použití (další informace najdete v tématu Kódování znaků v .NET)
-A-
Fallback je nastavená na DecoderExceptionFallbackhodnotu .
Poznámky
Mějte na paměti Decoder , že objekt ukládá stav mezi voláními objektu GetChars. Když aplikace dokončí stream dat, měla by nastavit flush
parametr na , true
aby se zajistilo vyprázdnění informací o stavu. Při tomto nastavení dekodér ignoruje neplatné bajty na konci datového bloku a vymaže vnitřní vyrovnávací paměť.
K výpočtu přesné velikosti pole, která GetChars
je nutná k uložení výsledných znaků, by aplikace 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 do interní vyrovnávací paměti a použije je v další dekódovací operaci. Aplikace by měla volat GetCharCount
blok dat bezprostředně před voláním GetChars
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 streamu, zvažte použití Convert metody . GetChars vyvolá výjimku, pokud výstupní vyrovnávací paměť není dostatečně velká, ale Convert zaplní 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ň dva znaky. Další komentáře najdete také v Encoding.GetChars tématu.