Compartir a través de


Decoder Clase

Definición

Convierte una secuencia de bytes codificados en un conjunto de caracteres.

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
Herencia
Decoder
Atributos

Ejemplos

En el ejemplo siguiente se muestra el uso de para Decoder convertir dos matrices de bytes diferentes en una matriz de caracteres. Uno de los bytes del carácter abarca las matrices. Esto es similar a lo que hace un StreamReader objeto internamente al leer una secuencia.

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

Comentarios

Para obtener una instancia de una implementación de la Decoder clase , llame al GetDecoder método de una Encoding implementación.

El GetCharCount método determina el número de caracteres que tienen como resultado la descodificación de una secuencia de bytes y el GetChars método realiza la descodificación real. Hay varias versiones de estos métodos disponibles en la Decoder clase . Para obtener más información, vea Encoding.GetChars. Un Decoder objeto mantiene información de estado entre llamadas sucesivas a GetChars métodos o Convert para que pueda descodificar correctamente las secuencias de bytes que abarcan bloques. DecoderTambién conserva los bytes finales al final de los bloques de datos y usa los bytes finales en la siguiente operación de descodificación. Por lo tanto, GetDecoder y GetEncoder son útiles para las operaciones de transmisión de red y archivos, ya que esas operaciones suelen tratar con bloques de datos en lugar de un flujo de datos completo.

Nota

Cuando la aplicación haya terminado con un flujo de datos, debe asegurarse de que la información de estado se vacía estableciendo el flush parámetro true en en la llamada al método adecuado. Si se produce una excepción o si la aplicación cambia de flujo, debe llamar Reset a para borrar el estado interno del Decoder objeto.

Notas a los implementadores

Cuando la aplicación hereda de esta clase, debe invalidar todos los miembros.

Constructores

Decoder()

Inicializa una nueva instancia de la clase Decoder.

Propiedades

Fallback

Obtiene o establece un objeto DecoderFallback para el objeto Decoder actual.

FallbackBuffer

Obtiene el objeto DecoderFallbackBuffer asociado al objeto Decoder actual.

Métodos

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

Convierte un búfer de bytes codificados en caracteres con codificación UTF-16 y almacena el resultado en otro búfer.

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

Convierte una matriz de bytes codificados en caracteres con codificación UTF-16 y almacena el resultado en otra matriz de caracteres.

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

Convierte un intervalo de bytes codificados en caracteres con codificación UTF-16 y almacena el resultado en otro búfer de intervalo.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetCharCount(Byte*, Int32, Boolean)

Cuando se reemplaza en una clase derivada, calcula el número de caracteres que se generan al descodificar una secuencia de bytes a partir del puntero de bytes especificado. Un parámetro indica si se debe borrar el estado interno del descodificador después del cálculo.

GetCharCount(Byte[], Int32, Int32)

Cuando se reemplaza en una clase derivada, calcula el número de caracteres que se generan al descodificar una secuencia de bytes de la matriz de bytes especificada.

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

Cuando se reemplaza en una clase derivada, calcula el número de caracteres que se generan al descodificar una secuencia de bytes de la matriz de bytes especificada. Un parámetro indica si se debe borrar el estado interno del descodificador después del cálculo.

GetCharCount(ReadOnlySpan<Byte>, Boolean)

Cuando se invalida en una clase derivada, calcula el número de caracteres que se generan al descodificar una secuencia de bytes en el intervalo. Un parámetro indica si se debe borrar el estado interno del descodificador después del cálculo.

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

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes a partir del puntero de byte especificado y cualquier byte del búfer interno en un juego de caracteres que se almacena a partir del puntero de caracteres especificado. Un parámetro indica si el estado interno del descodificador se borra después de la conversión.

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

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada y cualquier byte del búfer interno en la matriz de caracteres especificada.

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

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada y cualquier byte del búfer interno en la matriz de caracteres especificada. Un parámetro indica si el estado interno del descodificador se borra después de la conversión.

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

Cuando se invalida en una clase derivada, descodifica una secuencia de bytes de intervalo y cualquier byte del búfer interno en un juego de caracteres que se almacena a partir del puntero de caracteres especificado. Un parámetro indica si el estado interno del descodificador se borra después de la conversión.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Reset()

Cuando se reemplaza en una clase derivada, reestablece el estado inicial del descodificador.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Métodos de extensión

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

Convierte ReadOnlySequence<T> en caracteres con codificación UTF-16 y escribe el resultado en writer.

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

Convierte ReadOnlySpan<T> en caracteres mediante decoder y escribe el resultado en writer.

Se aplica a

Consulte también