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 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 |
Convert(Decoder, ReadOnlySpan<Byte>, IBufferWriter<Char>, Boolean, Int64, Boolean) |
Converte un oggetto ReadOnlySpan<T> in caratteri usando |