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 elementu 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 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
Uwagi
Aby uzyskać wystąpienie implementacji Decoder klasy, wywołaj GetDecoder metodę implementacji Encoding .
Metoda GetCharCount określa, ile znaków powoduje dekodowanie sekwencji bajtów, a GetChars metoda wykonuje rzeczywiste dekodowanie. W klasie dostępnych Decoder jest kilka wersji obu tych metod. Aby uzyskać więcej informacji, zobacz Encoding.GetChars.
Decoder Obiekt zachowuje informacje o stanie między kolejnymi wywołaniami GetChars
lub Convert metodami, 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 bajtów końcowych w następnej operacji dekodowania. W związku z tym i GetEncoder są przydatne w przypadku operacji transmisji sieci i plików, GetDecoder ponieważ te operacje często zajmują się blokami danych zamiast pełnego strumienia danych.
Uwaga
Po zakończeniu działania aplikacji ze strumieniem danych należy upewnić się, że informacje o stanie są opróżniane, ustawiając flush
parametr na true
wartość w odpowiednim wywołaniu metody. W przypadku wystąpienia wyjątku lub przełączenia strumieni przez aplikację należy wywołać metodę Reset w celu wyczyszczenia stanu wewnętrznego Decoder
obiektu.
Uwagi dotyczące implementowania
Gdy aplikacja dziedziczy z tej klasy, musi zastąpić wszystkie elementy członkowskie.
Konstruktory
Decoder() |
Inicjuje nowe wystąpienie klasy Decoder. |
Właściwości
Fallback |
Pobiera lub ustawia DecoderFallback obiekt dla bieżącego Decoder obiektu. |
FallbackBuffer |
DecoderFallbackBuffer Pobiera obiekt skojarzony z bieżącym Decoder obiektem. |
Metody
Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean) |
Konwertuje bufor zakodowanych bajtów na zakodowane znaki UTF-16 i przechowuje wynik w innym buforze. |
Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean) |
Konwertuje tablicę zakodowanych bajtów na zakodowane znaki UTF-16 i przechowuje wynik w tablicy znaków. |
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, Boolean) |
W przypadku zastąpienia 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(Byte[], Int32, Int32) |
W przypadku zastąpienia w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów z określonej tablicy bajtów. |
GetCharCount(Byte[], Int32, Int32, Boolean) |
W przypadku zastąpienia 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(ReadOnlySpan<Byte>, Boolean) |
W przypadku zastąpienia 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, Char*, Int32, Boolean) |
W przypadku zastąpienia 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 przechowywanych od określonego wskaźnika znaków. Parametr wskazuje, czy wyczyścić stan wewnętrzny dekodera po konwersji. |
GetChars(Byte[], Int32, Int32, Char[], Int32) |
W przypadku zastąpienia 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, Int32, Char[], Int32, Boolean) |
W przypadku zastąpienia 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(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
W przypadku zastąpienia w klasie pochodnej dekoduje sekwencję bajtów i wszystkich bajtów w buforze wewnętrznym do zestawu znaków przechowywanych 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() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Reset() |
Po przesłonięciu w klasie pochodnej ustawia dekoder z powrotem do stanu początkowego. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Metody rozszerzania
Convert(Decoder, ReadOnlySequence<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
Konwertuje znaki zakodowane ReadOnlySequence<T> na UTF-16 i zapisuje wynik na |
Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
Konwertuje znak ReadOnlySpan<T> na znaki przy użyciu i |