Condividi tramite


Decoder Classe

Definizione

Converte una sequenza di byte codificati in un set di caratteri.

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
Ereditarietà
Decoder
Attributi

Esempio

Nell'esempio seguente viene illustrato l'uso di un Decoder oggetto per convertire due matrici di byte diverse in una matrice di caratteri. Uno dei byte del carattere si estende sulle matrici. È simile a quello che un StreamReader oggetto esegue internamente durante la lettura di un flusso.

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

Commenti

Per ottenere un'istanza di un'implementazione della Decoder classe, chiamare il GetDecoder metodo di un'implementazione Encoding .

Il GetCharCount metodo determina il numero di caratteri che derivano dalla decodifica di una sequenza di byte e il GetChars metodo esegue la decodifica effettiva. Nella classe sono disponibili Decoder diverse versioni di entrambi questi metodi. Per altre informazioni, vedere Encoding.GetChars. Un Decoder oggetto gestisce le informazioni sullo stato tra chiamate successive a GetChars o Convert metodi in modo che possa decodificare correttamente le sequenze di byte che si estendono su blocchi. DecoderConserva inoltre i byte finali alla fine dei blocchi di dati e usa i byte finali nella successiva operazione di decodifica. Pertanto, GetDecoder e GetEncoder sono utili per le operazioni di trasmissione e file di rete perché queste operazioni spesso gestiscono blocchi di dati anziché un flusso di dati completo.

Nota

Quando l'applicazione viene eseguita con un flusso di dati, è necessario assicurarsi che le informazioni sullo stato vengano scaricate impostando il flush parametro su true nella chiamata al metodo appropriato. Se si verifica un'eccezione o se l'applicazione passa flussi, deve chiamare Reset per cancellare lo stato interno dell'oggetto Decoder .

Note per gli implementatori

Quando l'applicazione eredita da questa classe, deve eseguire l'override di tutti i membri.

Costruttori

Decoder()

Inizializza una nuova istanza della classe Decoder.

Proprietà

Fallback

Ottiene o imposta un oggetto DecoderFallback per l'oggetto Decoder corrente.

FallbackBuffer

Ottiene l'oggetto DecoderFallbackBuffer associato all'oggetto Decoder corrente.

Metodi

Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean)

Converte un buffer di byte codificati in caratteri con codifica UTF-16 e archivia il risultato in un altro buffer.

Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean)

Converte una matrice di byte codificati in caratteri con codifica UTF-16 e archivia il risultato in un'altra matrice di caratteri.

Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean)

Converte un intervallo di byte codificati in caratteri con codifica UTF-16 e archivia il risultato in un altro buffer di intervallo.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetCharCount(Byte*, Int32, Boolean)

Quando ne viene eseguito l'override in una classe derivata, calcola il numero di caratteri prodotti dalla decodifica di una sequenza di byte a partire dal puntatore ai byte specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo il calcolo.

GetCharCount(Byte[], Int32, Int32)

Quando ne viene eseguito l'override in una classe derivata, calcola il numero di caratteri prodotti dalla decodifica di una sequenza di byte dalla matrice di byte specificata.

GetCharCount(Byte[], Int32, Int32, Boolean)

Quando ne viene eseguito l'override in una classe derivata, calcola il numero di caratteri prodotti dalla decodifica di una sequenza di byte dalla matrice di byte specificata. Un parametro indica se cancellare lo stato interno del decodificatore dopo il calcolo.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Quando ne viene eseguito l'override in una classe derivata, calcola il numero di caratteri prodotti dalla decodifica di una sequenza di byte nell'intervallo. Un parametro indica se cancellare lo stato interno del decodificatore dopo il calcolo.

GetChars(Byte*, Int32, Char*, Int32, Boolean)

Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte a partire dal puntatore ai byte specificato e qualsiasi byte presente nel buffer interno in un set di caratteri archiviati a partire dal puntatore ai caratteri specificato. Un parametro indica se annullare lo stato interno del decodificatore dopo la conversione.

GetChars(Byte[], Int32, Int32, Char[], Int32)

Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte della matrice di byte specificata e qualsiasi byte presente nel buffer interno nella matrice di caratteri specificata.

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte della matrice di byte specificata e qualsiasi byte presente nel buffer interno nella matrice di caratteri specificata. Un parametro indica se annullare lo stato interno del decodificatore dopo la conversione.

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte nell'intervallo e tutti i byte presenti nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se annullare lo stato interno del decodificatore dopo la conversione.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Reset()

Quando sottoposto a override in una classe derivata, ripristina lo stato iniziale del decodificatore.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Metodi di estensione

Convert(Decoder, ReadOnlySequence<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean)

Converte un oggetto ReadOnlySequence<T> in caratteri con codifica UTF-16 e scrive il risultato in writer.

Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean)

Converte un oggetto ReadOnlySpan<T> in caratteri usando decoder e scrive il risultato in writer.

Si applica a

Vedi anche