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 bajtových polí na znakové pole. Jeden z bajtů znaku zahrnuje pole. To se podobá tomu, co StreamReader objekt dělá interně při čtení datového proudu.
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 provádí skutečné dekódování. Ve třídě je k dispozici Decoder několik verzí obou těchto metod. Další informace najdete na webu Encoding.GetChars. Objekt Decoder udržuje informace o stavu mezi následnými voláními GetChars nebo Convert metodami, aby mohl správně dekódovat bajtové sekvence, které pokrývají bloky. Zároveň Decoder zachovává koncové bajty na konci datových bloků a používá koncové bajty v další dekódovací operaci. Proto jsou GetEncoder užitečné pro síťové přenosy a operace se soubory, GetDecoder protože tyto operace často zpracovávají bloky dat místo kompletního datového proudu.
Note
Po dokončení aplikace s datovým proudem by se mělo ujistit, že informace o stavu jsou vyprázdněné nastavením flush parametru do true příslušného volání metody. Pokud dojde k výjimce nebo pokud aplikace přepne datové proudy, měla by volat Reset vymazání vnitřního stavu 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
| Name | Description |
|---|---|
| Decoder() |
Inicializuje novou instanci Decoder třídy. |
Vlastnosti
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
| Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean) |
Převede pole kódovaných bajtů na kódované znaky kódování UTF-16 a uloží výsledek do pole znaků. |
| Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean) |
Převede vyrovnávací paměť zakódovaných bajtů na kódované znaky UTF-16 a uloží výsledek do jiné vyrovnávací paměti. |
| Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean) |
Převede rozsah kódovaných bajtů na kódované znaky kódování UTF-16 a uloží výsledek do jiné vyrovnávací paměti rozsahu. |
| Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
| 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 bajtového pole. 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 bajtového pole. |
| GetCharCount(Byte*, Int32, Boolean) |
Při přepsání v odvozené třídě vypočítá počet znaků vytvořený dekódováním posloupnosti bajtů počínaje zadaným ukazatelem bajtu. 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ý 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, 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(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, 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(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. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Reset() |
Při přepsání v odvozené třídě nastaví dekodér zpět do původního stavu. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |