Decoder Třída
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řevede posloupnost zakódovaných bajtů na sadu znaků.
public ref class Decoder abstract
public abstract class Decoder
[System.Serializable]
public abstract class Decoder
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Decoder
type Decoder = class
[<System.Serializable>]
type Decoder = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Decoder = class
Public MustInherit Class Decoder
- Dědičnost
-
Decoder
- Atributy
Příklady
Následující příklad ukazuje použití k převodu Decoder dvou různých bajtů pole na pole znaků. Jeden z bajtů znaku překlenuje pole. Je to podobné tomu, co StreamReader objekt dělá interně při čtení streamu.
using namespace System;
using namespace System::Text;
int main()
{
// These bytes in UTF-8 correspond to 3 different Unicode
// characters: space (U+0020), # (U+0023), and the biohazard
// symbol (U+2623). Note the biohazard symbol requires 3 bytes
// in UTF-8 (hexadecimal e2, 98, a3). Decoders store state across
// multiple calls to GetChars, handling the case when one char
// is in multiple byte arrays.
array<Byte>^bytes1 = {0x20,0x23,0xe2};
array<Byte>^bytes2 = {0x98,0xa3};
array<Char>^chars = gcnew array<Char>(3);
Decoder^ d = Encoding::UTF8->GetDecoder();
int charLen = d->GetChars( bytes1, 0, bytes1->Length, chars, 0 );
// The value of charLen should be 2 now.
charLen += d->GetChars( bytes2, 0, bytes2->Length, chars, charLen );
for ( UInt16 index(0); index < chars->Length; ++index )
{
Console::Write( "U+{0:X4} ", static_cast<UInt16>(chars[ index ]) );
}
}
using System;
using System.Text;
public class dec
{
public static void Main()
{
// These bytes in UTF-8 correspond to 3 different Unicode
// characters: space (U+0020), # (U+0023), and the biohazard
// symbol (U+2623). Note the biohazard symbol requires 3 bytes
// in UTF-8 (hexadecimal e2, 98, a3). Decoders store state across
// multiple calls to GetChars, handling the case when one char
// is in multiple byte arrays.
byte[] bytes1 = { 0x20, 0x23, 0xe2 };
byte[] bytes2 = { 0x98, 0xa3 };
char[] chars = new char[3];
Decoder d = Encoding.UTF8.GetDecoder();
int charLen = d.GetChars(bytes1, 0, bytes1.Length, chars, 0);
// The value of charLen should be 2 now.
charLen += d.GetChars(bytes2, 0, bytes2.Length, chars, charLen);
foreach(char c in chars)
Console.Write("U+{0:X4} ", (ushort)c);
}
}
Imports System.Text
Public Class dec
Public Shared Sub Main()
' These bytes in UTF-8 correspond to 3 different Unicode
' characters: space (U+0020), # (U+0023), and the biohazard
' symbol (U+2623). Note the biohazard symbol requires 3 bytes
' in UTF-8 (hexadecimal e2, 98, a3). Decoders store state across
' multiple calls to GetChars, handling the case when one char
' is in multiple byte arrays.
Dim bytes1 As Byte() = {&H20, &H23, &HE2}
Dim bytes2 As Byte() = {&H98, &HA3}
Dim chars(3) As Char
Dim d As Decoder = Encoding.UTF8.GetDecoder()
Dim charLen As Integer = d.GetChars(bytes1, 0, bytes1.Length, chars, 0)
' The value of charLen should be 2 now.
charLen += d.GetChars(bytes2, 0, bytes2.Length, chars, charLen)
Dim c As Char
For Each c In chars
Console.Write("U+{0:X4} ", Convert.ToUInt16(c) )
Next c
End Sub
End Class
Poznámky
Chcete-li získat instanci implementace Decoder třídy, zavolejte GetDecoder metodu Encoding implementace.
Metoda GetCharCount určuje, kolik znaků má za následek dekódování posloupnosti bajtů, a GetChars metoda provede skutečné dekódování. Ve třídě je k dispozici Decoder několik verzí obou těchto metod. Další informace naleznete v tématu Encoding.GetChars. Objekt Decoder udržuje informace o stavu mezi po sobě jdoucími GetChars
voláními nebo Convert metodami, aby mohl správně dekódovat sekvence bajtů, které pokrývají bloky. Zachová Decoder také koncové bajty na konci datových bloků a použije koncové bajty v další operaci dekódování. Proto a GetEncoder jsou užitečné pro síťové přenosy a operace se soubory, GetDecoder protože tyto operace často pracují s bloky dat místo s úplným datovým proudem.
Poznámka
Když je aplikace hotová s datovým proudem, měla by zajistit, aby informace o stavu byly vyprázdněny nastavením parametru flush
na true
v příslušném volání metody. Pokud dojde k výjimce nebo aplikace přepne streamy, měla by volat Reset , aby se vymazal vnitřní stav objektu Decoder
.
Poznámky pro implementátory
Když vaše aplikace dědí z této třídy, musí přepsat všechny členy.
Konstruktory
Decoder() |
Inicializuje novou instanci Decoder třídy. |
Vlastnosti
Fallback |
Získá nebo nastaví DecoderFallback objekt pro aktuální Decoder objekt. |
FallbackBuffer |
DecoderFallbackBuffer Získá objekt přidružený k aktuálnímu Decoder objektu. |
Metody
Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean) |
Převede vyrovnávací paměť kódovaných bajtů na znaky kódování UTF-16 a uloží výsledek do jiné vyrovnávací paměti. |
Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean) |
Převede pole zakódovaných bajtů na znaky s kódováním UTF-16 a uloží výsledek do pole znaků. |
Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean) |
Převede rozsah zakódovaných bajtů na znaky s kódováním UTF-16 a uloží výsledek do jiné vyrovnávací paměti span. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetCharCount(Byte*, Int32, Boolean) |
Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů počínaje zadaným bajtovým ukazatelem. Parametr určuje, zda se má po výpočtu vymazat vnitřní stav dekodéru. |
GetCharCount(Byte[], Int32, Int32) |
Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů ze zadaného pole bajtů. |
GetCharCount(Byte[], Int32, Int32, Boolean) |
Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů ze zadaného pole bajtů. Parametr určuje, zda se má po výpočtu vymazat vnitřní stav dekodéru. |
GetCharCount(ReadOnlySpan<Byte>, Boolean) |
Při přepsání v odvozené třídě vypočítá počet znaků vytvořených dekódováním posloupnosti bajtů v rozsahu. Parametr určuje, zda se má po výpočtu 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) |
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. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Reset() |
Při přepsání v odvozené třídě nastaví dekodér zpět do počátečního stavu. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Metody rozšíření
Convert(Decoder, ReadOnlySequence<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
Převede znaky s kódováním ReadOnlySequence<T> UTF-16 a zapíše výsledek do |
Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
Převede znak na ReadOnlySpan<T> znaky pomocí |