Leer en inglés

Compartir vía


Encoder Clase

Definición

Codifica un conjunto de caracteres en una secuencia de bytes.

C#
public abstract class Encoder
C#
[System.Serializable]
public abstract class Encoder
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Encoder
Herencia
Encoder
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo convertir una matriz de caracteres Unicode en bloques de bytes mediante una codificación especificada. Para la comparación, la matriz de caracteres se codifica primero mediante UTF7Encoding. A continuación, la matriz de caracteres se codifica mediante .Encoder

C#
using System;
using System.Text;

class EncoderTest {
    public static void Main() {
        // The characters to encode.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };

        // Encode characters using an Encoding object.
        Encoding encoding = Encoding.UTF7;
        Console.WriteLine("Using Encoding\n--------------");

        // Encode complete array for comparison.
        Byte[] allCharactersFromEncoding = encoding.GetBytes(chars);
        Console.WriteLine("All characters encoded:");
        ShowArray(allCharactersFromEncoding);

        // Encode characters, one-by-one.
        // The Encoding object will NOT maintain state between calls.
        Byte[] firstchar = encoding.GetBytes(chars, 0, 1);
        Console.WriteLine("First character:");
        ShowArray(firstchar);

        Byte[] secondchar = encoding.GetBytes(chars, 1, 1);
        Console.WriteLine("Second character:");
        ShowArray(secondchar);

        Byte[] thirdchar = encoding.GetBytes(chars, 2, 1);
        Console.WriteLine("Third character:");
        ShowArray(thirdchar);

        Byte[] fourthchar = encoding.GetBytes(chars, 3, 1);
        Console.WriteLine("Fourth character:");
        ShowArray(fourthchar);

        // Now, encode characters using an Encoder object.
        Encoder encoder = encoding.GetEncoder();
        Console.WriteLine("Using Encoder\n-------------");

        // Encode complete array for comparison.
        Byte[] allCharactersFromEncoder = new Byte[encoder.GetByteCount(chars, 0, chars.Length, true)];
        encoder.GetBytes(chars, 0, chars.Length, allCharactersFromEncoder, 0, true);
        Console.WriteLine("All characters encoded:");
        ShowArray(allCharactersFromEncoder);

        // Do not flush state; i.e. maintain state between calls.
        bool bFlushState = false;

        // Encode characters one-by-one.
        // By maintaining state, the Encoder will not store extra bytes in the output.
        Byte[] firstcharNoFlush = new Byte[encoder.GetByteCount(chars, 0, 1, bFlushState)];
        encoder.GetBytes(chars, 0, 1, firstcharNoFlush, 0, bFlushState);
        Console.WriteLine("First character:");
        ShowArray(firstcharNoFlush);

        Byte[] secondcharNoFlush = new Byte[encoder.GetByteCount(chars, 1, 1, bFlushState)];
        encoder.GetBytes(chars, 1, 1, secondcharNoFlush, 0, bFlushState);
        Console.WriteLine("Second character:");
        ShowArray(secondcharNoFlush);

        Byte[] thirdcharNoFlush = new Byte[encoder.GetByteCount(chars, 2, 1, bFlushState)];
        encoder.GetBytes(chars, 2, 1, thirdcharNoFlush, 0, bFlushState);
        Console.WriteLine("Third character:");
        ShowArray(thirdcharNoFlush);

        // Must flush state on last call to GetBytes().
        bFlushState = true;
        
        Byte[] fourthcharNoFlush = new Byte[encoder.GetByteCount(chars, 3, 1, bFlushState)];
        encoder.GetBytes(chars, 3, 1, fourthcharNoFlush, 0, bFlushState);
        Console.WriteLine("Fourth character:");
        ShowArray(fourthcharNoFlush);
    }

    public static void ShowArray(Array theArray) {
        foreach (Object o in theArray) {
            Console.Write("[{0}]", o);
        }
        Console.WriteLine("\n");
    }
}

/* This code example produces the following output.

Using Encoding
--------------
All characters encoded:
[43][65][67][77][65][74][81][79][103][65][54][77][45]

First character:
[43][65][67][77][45]

Second character:
[43][65][67][85][45]

Third character:
[43][65][54][65][45]

Fourth character:
[43][65][54][77][45]

Using Encoder
-------------
All characters encoded:
[43][65][67][77][65][74][81][79][103][65][54][77][45]

First character:
[43][65][67]

Second character:
[77][65][74]

Third character:
[81][79][103]

Fourth character:
[65][54][77][45]


*/

Comentarios

Para obtener una instancia de una implementación de la Encoder clase , la aplicación debe usar el GetEncoder método de una Encoding implementación.

El GetByteCount método determina el número de bytes que dan como resultado la codificación de un conjunto de caracteres Unicode y el GetBytes método realiza la codificación real. Hay varias versiones de estos métodos disponibles en la Encoder clase . Para obtener más información, vea Encoding.GetBytes.

Un Encoder objeto mantiene información de estado entre llamadas sucesivas a GetBytes métodos o Convert para que pueda codificar correctamente secuencias de caracteres que abarcan bloques. EncoderTambién conserva los caracteres finales al final de los bloques de datos y usa los caracteres finales en la siguiente operación de codificación. Por ejemplo, un bloque de datos puede terminar con un suplente alto no coincidente y el suplente inferior coincidente podría estar en el siguiente bloque de datos. Por lo tanto, GetDecoder y GetEncoder son útiles para la transmisión de red y las operaciones de archivos, ya que estas operaciones suelen tratar con bloques de datos en lugar de con una secuencia de datos completa.

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 Encoder objeto.

Notas a los implementadores

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

Constructores

Encoder()

Inicializa una nueva instancia de la clase Encoder.

Propiedades

Fallback

Obtiene o establece un objeto EncoderFallback para el objeto Encoder actual.

FallbackBuffer

Obtiene el objeto EncoderFallbackBuffer asociado al objeto Encoder actual.

Métodos

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

Convierte un búfer de caracteres Unicode en una secuencia de bytes codificada y almacena el resultado en otro búfer.

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

Convierte una matriz de caracteres Unicode en una secuencia de bytes codificada y almacena el resultado en otra matriz de bytes.

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

Convierte un intervalo de caracteres Unicode en una secuencia de bytes codificada y almacena el resultado en otro búfer.

Equals(Object)

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

(Heredado de Object)
GetByteCount(Char*, Int32, Boolean)

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

GetByteCount(Char[], Int32, Int32, Boolean)

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

GetByteCount(ReadOnlySpan<Char>, Boolean)

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

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

Cuando se reemplaza en una clase derivada, codifica un juego de caracteres a partir del puntero de carácter especificado y cualquier carácter del búfer interno en una secuencia de bytes que se almacenan a partir del puntero de byte especificado. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

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

Cuando se reemplaza en una clase derivada, codifica un juego de caracteres de la matriz de caracteres especificada y cualquier carácter del búfer interno en la matriz de bytes especificada. Un parámetro indica si se debe borrar el estado interno del codificador después de la conversión.

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

Cuando se invalida en una clase derivada, codifica un juego de caracteres del intervalo de caracteres de entrada y cualquier carácter del búfer interno en una secuencia de bytes que se almacenan en el intervalo de bytes de entrada. Un parámetro indica si se debe borrar el estado interno del codificador 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, restablece el estado inicial del codificador.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Métodos de extensión

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

Convierte ReadOnlySequence<T> en bytes codificados y escribe el resultado en writer.

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

Convierte ReadOnlySpan<T> en bytes mediante encoder y escribe el resultado en writer.

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Consulte también