Decoder Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konwertuje sekwencję zakodowanych bajtów na zestaw znaków.
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
- Dziedziczenie
-
Decoder
- Atrybuty
Przykłady
W poniższym przykładzie pokazano użycie klasy Decoder , aby przekonwertować dwie różne tablice bajtów na tablicę znaków. Jeden z bajtów znaku obejmuje tablice. Jest to podobne do tego, co StreamReader obiekt wykonuje wewnętrznie podczas odczytywania strumienia.
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
Uwagi
Aby uzyskać wystąpienie implementacji Decoder klasy, wywołaj GetDecoder metodę Encoding implementacji.
Metoda GetCharCount określa, ile znaków powoduje dekodowanie sekwencji bajtów, a GetChars metoda wykonuje rzeczywiste dekodowanie. W klasie jest dostępnych Decoder kilka wersji obu tych metod. Aby uzyskać więcej informacji, zobacz Encoding.GetChars. Obiekt Decoder przechowuje informacje o stanie między kolejnymi wywołaniami GetChars metod lub Convert , dzięki czemu może poprawnie dekodować sekwencje bajtów, które obejmują bloki. Obiekt Decoder zachowuje również końcowe bajty na końcu bloków danych i używa końcowych bajtów w następnej operacji dekodowania. W związku z tym i GetEncoder są przydatne w przypadku operacji transmisji i plików sieciowych, GetDecoder ponieważ te operacje często zajmują się blokami danych zamiast pełnego strumienia danych.
Note
Po zakończeniu działania aplikacji ze strumieniem danych należy upewnić się, że informacje o stanie są opróżniane przez ustawienie parametru flush na true w odpowiednim wywołaniu metody. W przypadku wystąpienia wyjątku lub przełączenia strumieni przez aplikację należy wywołać Reset metodę w celu wyczyszczenia stanu wewnętrznego Decoder obiektu.
Notatki dotyczące implementowania
Gdy aplikacja dziedziczy z tej klasy, musi zastąpić wszystkie elementy członkowskie.
Konstruktory
| Nazwa | Opis |
|---|---|
| Decoder() |
Inicjuje nowe wystąpienie klasy Decoder. |
Właściwości
| Nazwa | Opis |
|---|---|
| Fallback |
Pobiera lub ustawia DecoderFallback obiekt dla bieżącego Decoder obiektu. |
| FallbackBuffer |
DecoderFallbackBuffer Pobiera obiekt skojarzony z bieżącym Decoder obiektem. |
Metody
| Nazwa | Opis |
|---|---|
| Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean) |
Konwertuje tablicę zakodowanych bajtów na znaki zakodowane w formacie UTF-16 i przechowuje wynik w tablicy znaków. |
| Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean) |
Konwertuje bufor zakodowanych bajtów na znaki zakodowane w formacie UTF-16 i przechowuje wynik w innym buforze. |
| Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean) |
Konwertuje zakres zakodowanych bajtów na zakodowane znaki UTF-16 i przechowuje wynik w innym buforze zakresu. |
| Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
| GetCharCount(Byte[], Int32, Int32, Boolean) |
Po zastąpieniu w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów z określonej tablicy bajtów. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu. |
| GetCharCount(Byte[], Int32, Int32) |
Po zastąpieniu w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów z określonej tablicy bajtów. |
| GetCharCount(Byte*, Int32, Boolean) |
Podczas zastępowania w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów rozpoczynających się od określonego wskaźnika bajtów. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu. |
| GetCharCount(ReadOnlySpan<Byte>, Boolean) |
Po zastąpieniu w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów w zakresie. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po obliczeniu. |
| GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszelkie bajty w buforze wewnętrznym do określonej tablicy znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów i wszelkie bajty w buforze wewnętrznym do określonej tablicy znaków. |
| GetChars(Byte*, Int32, Char*, Int32, Boolean) |
W przypadku przesłonięcia w klasie pochodnej dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika bajtów i wszystkich bajtów w buforze wewnętrznym do zestawu znaków, które są przechowywane począwszy od określonego wskaźnika znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji. |
| GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów rozpiętości i wszystkich bajtów w buforze wewnętrznym w zestawie znaków, które są przechowywane począwszy od określonego wskaźnika znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji. |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| Reset() |
Po przesłonięciu w klasie pochodnej ustawia dekoder z powrotem na stan początkowy. |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |