Decoder Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразует последовательность закодированных байтов в набор символов.
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
- Наследование
-
Decoder
- Атрибуты
Примеры
В следующем примере показано использование массива Decoder для преобразования двух разных массивов байтов в массив символов. Один из байт символов охватывает массивы. Это похоже на то, что StreamReader объект выполняет внутренне при чтении потока.
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
Комментарии
Чтобы получить экземпляр реализации класса, вызовите GetDecoder метод Encoding реализацииDecoder.
Метод GetCharCount определяет, сколько символов приводит к декодированию последовательности байтов, а GetChars метод выполняет фактическое декодирование. В классе доступно Decoder несколько версий обоих этих методов. Дополнительные сведения см. в разделе Encoding.GetChars.
Decoder Объект сохраняет сведения о состоянии между последовательными вызовами GetChars или Convert методами, чтобы он смог правильно декодировать последовательности байтов, охватывающие блоки. Он Decoder также сохраняет конечные байты в конце блоков данных и использует конечные байты в следующей операции декодирования. Поэтому и GetEncoder полезны для сетевых операций передачи и файлов, GetDecoder так как эти операции часто имеют дело с блоками данных вместо полного потока данных.
Note
Когда приложение выполняется с потоком данных, необходимо убедиться, что сведения о состоянии сбрасываются, задав flush параметр в true соответствующем вызове метода. Если возникает исключение или если приложение переключает потоки, он должен вызвать Reset очистку внутреннего состояния Decoder объекта.
Примечания для тех, кто реализует этот метод
Когда приложение наследует от этого класса, оно должно переопределить все члены.
Конструкторы
| Имя | Описание |
|---|---|
| Decoder() |
Инициализирует новый экземпляр класса Decoder. |
Свойства
| Имя | Описание |
|---|---|
| Fallback |
Возвращает или задает DecoderFallback объект для текущего Decoder объекта. |
| FallbackBuffer |
Возвращает объект, связанный DecoderFallbackBuffer с текущим Decoder объектом. |
Методы
| Имя | Описание |
|---|---|
| Convert(Byte[], Int32, Int32, Char[], Int32, Int32, Boolean, Int32, Int32, Boolean) |
Преобразует массив закодированных байтов в символы в кодировке UTF-16 и сохраняет результат в массиве символов. |
| Convert(Byte*, Int32, Char*, Int32, Boolean, Int32, Int32, Boolean) |
Преобразует буфер закодированных байтов в символы в кодировке UTF-16 и сохраняет результат в другом буфере. |
| Convert(ReadOnlySpan<Byte>, Span<Char>, Boolean, Int32, Int32, Boolean) |
Преобразует диапазон закодированных байтов в символы в кодировке UTF-16 и сохраняет результат в другом буфере диапазона. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetCharCount(Byte[], Int32, Int32, Boolean) |
При переопределении в производном классе вычисляет количество символов, созданных путем декодирования последовательности байтов из указанного массива байтов. Параметр указывает, следует ли очистить внутреннее состояние декодера после вычисления. |
| GetCharCount(Byte[], Int32, Int32) |
При переопределении в производном классе вычисляет количество символов, созданных путем декодирования последовательности байтов из указанного массива байтов. |
| GetCharCount(Byte*, Int32, Boolean) |
При переопределении в производном классе вычисляет количество символов, созданных путем декодирования последовательности байтов, начиная с указанного указателя байтов. Параметр указывает, следует ли очистить внутреннее состояние декодера после вычисления. |
| GetCharCount(ReadOnlySpan<Byte>, Boolean) |
При переопределении в производном классе вычисляет количество символов, созданных путем декодирования последовательности байтов в диапазоне. Параметр указывает, следует ли очистить внутреннее состояние декодера после вычисления. |
| GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов и всех байтов во внутреннем буфере в указанный массив символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов и всех байтов во внутреннем буфере в указанный массив символов. |
| GetChars(Byte*, Int32, Char*, Int32, Boolean) |
При переопределении в производном классе декодирует последовательность байтов, начиная с указанного указателя байтов, и все байты во внутреннем буфере в набор символов, хранящихся начиная с указанного указателя символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования. |
| GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
При переопределении в производном классе декодирует последовательность байтов диапазона и все байты во внутреннем буфере в набор символов, которые хранятся начиная с указанного указателя символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования. |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| Reset() |
При переопределении в производном классе задает декодатор обратно в исходное состояние. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |