Decoder Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 oggetto Decoder per convertire due matrici di byte diverse in una matrice di caratteri. Uno dei byte del carattere si estende sulle matrici. Questa operazione è simile a quella eseguita internamente da un StreamReader oggetto durante la lettura di un flusso.
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 comportano la 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 mantiene 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.
Decoder Mantiene inoltre i byte finali alla fine dei blocchi di dati e utilizza i byte finali nell'operazione di decodifica successiva. Pertanto, GetDecoder e GetEncoder sono utili per le operazioni di trasmissione e file di rete perché tali operazioni spesso gestiscono blocchi di dati anziché un flusso di dati completo.
Note
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 appropriata. Se si verifica un'eccezione o se l'applicazione cambia 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
| Nome | Descrizione |
|---|---|
| Decoder() |
Inizializza una nuova istanza della classe Decoder. |
Proprietà
| Nome | Descrizione |
|---|---|
| Fallback |
Ottiene o imposta un DecoderFallback oggetto per l'oggetto corrente Decoder . |
| FallbackBuffer |
Ottiene l'oggetto DecoderFallbackBuffer associato all'oggetto corrente Decoder . |
Metodi
| Nome | Descrizione |
|---|---|
| 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 una matrice di caratteri. |
| 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(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 span. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetCharCount(Byte[], Int32, Int32, Boolean) |
In caso di override in una classe derivata, calcola il numero di caratteri prodotti decodificando una sequenza di byte dalla matrice di byte specificata. Un parametro indica se cancellare lo stato interno del decodificatore dopo il calcolo. |
| GetCharCount(Byte[], Int32, Int32) |
In caso di override in una classe derivata, calcola il numero di caratteri prodotti decodificando una sequenza di byte dalla matrice di byte specificata. |
| GetCharCount(Byte*, Int32, Boolean) |
Quando sottoposto a override in una classe derivata, calcola il numero di caratteri prodotti dalla decodifica di una sequenza di byte a partire dal puntatore di byte specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo il calcolo. |
| GetCharCount(ReadOnlySpan<Byte>, Boolean) |
Quando sottoposto a override in una classe derivata, calcola il numero di caratteri prodotti decodificando la sequenza di byte nell'intervallo. Un parametro indica se cancellare lo stato interno del decodificatore dopo il calcolo. |
| GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata ed eventuali byte nel buffer interno nella matrice di caratteri specificata. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata ed eventuali byte nel buffer interno nella matrice di caratteri specificata. |
| GetChars(Byte*, Int32, Char*, Int32, Boolean) |
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte a partire dal puntatore di byte specificato ed eventuali byte nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione. |
| GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
In caso di override in una classe derivata, decodifica una sequenza di byte di intervallo ed eventuali byte nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| Reset() |
Quando sottoposto a override in una classe derivata, imposta di nuovo il decodificatore sullo stato iniziale. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |