Decoder.GetChars Метод

Определение

При переопределении в производном классе декодирует последовательность байтов в набор символов.

Перегрузки

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

При переопределении в производном классе декодирует последовательность байтов диапазона и все байты во внутреннем буфере в набор символов, которые хранятся начиная с указанного указателя символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования.

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

При переопределении в производном классе декодирует последовательность байтов, начиная с указанного указателя байтов, и все байты во внутреннем буфере в набор символов, хранящихся начиная с указанного указателя символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования.

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

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов и всех байтов во внутреннем буфере в указанный массив символов.

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

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов и всех байтов во внутреннем буфере в указанный массив символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования.

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

Исходный код:
Decoder.cs
Исходный код:
Decoder.cs
Исходный код:
Decoder.cs

При переопределении в производном классе декодирует последовательность байтов диапазона и все байты во внутреннем буфере в набор символов, которые хранятся начиная с указанного указателя символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования.

public virtual int GetChars (ReadOnlySpan<byte> bytes, Span<char> chars, bool flush);

Параметры

bytes
ReadOnlySpan<Byte>

Диапазон байтов для декодации.

chars
Span<Char>

Диапазон для записи результирующего набора символов.

flush
Boolean

true очистить внутреннее состояние декодера после преобразования; в противном случае false.

Возвращаемое значение

Фактическое число символов, записанных в диапазоне, указанное параметром chars.

Комментарии

Помните, что объект Decoder сохраняет состояние между вызовами GetChars. Когда приложение выполняется с потоком данных, оно должно задать параметр flush для true, чтобы убедиться, что сведения о состоянии сбрасываются. С помощью этого параметра декодировщик игнорирует недопустимые байты в конце блока данных и очищает внутренний буфер.

Чтобы вычислить точный размер диапазона, который GetChars требуется для хранения полученных символов, приложение должно использовать GetCharCount.

Если GetChars вызывается с flush для false, декодатор сохраняет конечные байты в конце блока данных во внутреннем буфере и использует их в следующей операции декодирования. Приложение должно вызывать GetCharCount в блоке данных непосредственно перед вызовом GetChars в одном блоке, чтобы все конечные байты из предыдущего блока были включены в вычисление.

Если приложение предназначено для преобразования множества сегментов входного потока, рассмотрите возможность использования метода Convert. GetChars вызовет исключение, если выходной диапазон не достаточно велик, но Convert заполняет максимальное пространство и возвращает байты чтения и записи символов, если выходной массив позволяет по крайней мере два символа. Дополнительные комментарии см. в разделе Encoding.GetChars.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

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

Исходный код:
Decoder.cs
Исходный код:
Decoder.cs
Исходный код:
Decoder.cs

Важно!

Этот API несовместим с CLS.

При переопределении в производном классе декодирует последовательность байтов, начиная с указанного указателя байтов, и все байты во внутреннем буфере в набор символов, хранящихся начиная с указанного указателя символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования.

[System.CLSCompliant(false)]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetChars (byte* bytes, int byteCount, char* chars, int charCount, bool flush);

Параметры

bytes
Byte*

Указатель на первый байт для декодации.

byteCount
Int32

Количество байтов, которые необходимо декодировать.

chars
Char*

Указатель на расположение, с которого начинается запись результирующего набора символов.

charCount
Int32

Максимальное количество символов для записи.

flush
Boolean

true очистить внутреннее состояние декодера после преобразования; в противном случае false.

Возвращаемое значение

Фактическое число символов, записанных в расположении, указанном параметром chars.

Атрибуты

Исключения

bytes null (Nothing).

-или-

chars null (Nothing).

byteCount или charCount меньше нуля.

charCount меньше результирующего числа символов.

Произошла резервная ошибка (дополнительные сведения см. в разделе Кодировка символов в .NET)

-и-

Fallback имеет значение DecoderExceptionFallback.

Комментарии

Помните, что объект Decoder сохраняет состояние между вызовами GetChars. Когда приложение выполняется с потоком данных, оно должно задать параметр flush для true, чтобы убедиться, что сведения о состоянии сбрасываются. С помощью этого параметра декодировщик игнорирует недопустимые байты в конце блока данных и очищает внутренний буфер.

Чтобы вычислить точный размер буфера, который GetChars требуется для хранения полученных символов, приложение должно использовать GetCharCount.

Если GetChars вызывается с flush для false, декодатор сохраняет конечные байты в конце блока данных во внутреннем буфере и использует их в следующей операции декодирования. Приложение должно вызывать GetCharCount в блоке данных непосредственно перед вызовом GetChars в одном блоке, чтобы все конечные байты из предыдущего блока были включены в вычисление.

Если приложение предназначено для преобразования множества сегментов входного потока, рассмотрите возможность использования метода Convert. GetChars вызовет исключение, если выходной буфер недостаточно велик, но Convert заполняет максимальное пространство и возвращает записанные байты, если выходной массив позволяет по крайней мере два символа. Дополнительные комментарии см. в разделе Encoding.GetChars.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 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 2.0, 2.1

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

Исходный код:
Decoder.cs
Исходный код:
Decoder.cs
Исходный код:
Decoder.cs

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов и всех байтов во внутреннем буфере в указанный массив символов.

public abstract int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);

Параметры

bytes
Byte[]

Массив байтов, содержащий последовательность байтов для декодирования.

byteIndex
Int32

Индекс первого байта для декодирования.

byteCount
Int32

Количество байтов, которые необходимо декодировать.

chars
Char[]

Массив символов, содержащий результирующий набор символов.

charIndex
Int32

Индекс, с которого начинается запись результирующего набора символов.

Возвращаемое значение

Фактическое число символов, записанных в chars.

Исключения

bytes null (Nothing).

-или-

chars null (Nothing).

byteIndex или byteCount или charIndex меньше нуля.

-или-

byteindex и byteCount не указывают допустимый диапазон в bytes.

-или-

charIndex недопустимый индекс в chars.

chars не хватает емкости от charIndex до конца массива, чтобы разместить полученные символы.

Произошла резервная ошибка (дополнительные сведения см. в разделе Кодировка символов в .NET)

-и-

Fallback имеет значение DecoderExceptionFallback.

Примеры

В следующем примере показано, как декодировать диапазон элементов из массива байтов и хранить их в массиве символов Юникода. Метод GetCharCount используется для вычисления количества символов, необходимых для хранения декодированных элементов в массиве bytes. Метод GetChars декодирует указанные элементы в массиве байтов и сохраняет их в новом массиве символов.

using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
        };

        Decoder uniDecoder = Encoding.Unicode.GetDecoder();

        int charCount = uniDecoder.GetCharCount(bytes, 0, bytes.Length);
        chars = new Char[charCount];
        int charsDecodedCount = uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

*/

Комментарии

Помните, что объект Decoder сохраняет состояние между вызовами GetChars. Когда приложение выполняется с потоком данных, оно должно задать параметр flush для true, чтобы убедиться, что сведения о состоянии сбрасываются. С помощью этого параметра декодировщик игнорирует недопустимые байты в конце блока данных и очищает внутренний буфер.

Чтобы вычислить точный размер массива, который GetChars требуется для хранения полученных символов, приложение должно использовать GetCharCount.

Если GetChars вызывается с flush для false, декодатор сохраняет конечные байты в конце блока данных во внутреннем буфере и использует их в следующей операции декодирования. Приложение должно вызывать GetCharCount в блоке данных непосредственно перед вызовом GetChars в одном блоке, чтобы все конечные байты из предыдущего блока были включены в вычисление.

Если приложение предназначено для преобразования множества сегментов входного потока, рассмотрите возможность использования метода Convert. GetChars вызовет исключение, если выходной буфер недостаточно велик, но Convert заполняет максимальное пространство и возвращает записанные байты, если выходной массив позволяет по крайней мере два символа. Дополнительные комментарии см. в разделе Encoding.GetChars.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.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

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

Исходный код:
Decoder.cs
Исходный код:
Decoder.cs
Исходный код:
Decoder.cs

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов и всех байтов во внутреннем буфере в указанный массив символов. Параметр указывает, следует ли очистить внутреннее состояние декодера после преобразования.

public virtual int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex, bool flush);

Параметры

bytes
Byte[]

Массив байтов, содержащий последовательность байтов для декодирования.

byteIndex
Int32

Индекс первого байта для декодирования.

byteCount
Int32

Количество байтов, которые необходимо декодировать.

chars
Char[]

Массив символов, содержащий результирующий набор символов.

charIndex
Int32

Индекс, с которого начинается запись результирующего набора символов.

flush
Boolean

true очистить внутреннее состояние декодера после преобразования; в противном случае false.

Возвращаемое значение

Фактическое число символов, записанных в параметр chars.

Исключения

bytes null (Nothing).

-или-

chars null (Nothing).

byteIndex или byteCount или charIndex меньше нуля.

-или-

byteindex и byteCount не указывают допустимый диапазон в bytes.

-или-

charIndex недопустимый индекс в chars.

chars не хватает емкости от charIndex до конца массива, чтобы разместить полученные символы.

Произошла резервная ошибка (дополнительные сведения см. в разделе Кодировка символов в .NET)

-и-

Fallback имеет значение DecoderExceptionFallback.

Комментарии

Помните, что объект Decoder сохраняет состояние между вызовами GetChars. Когда приложение выполняется с потоком данных, оно должно задать параметр flush для true, чтобы убедиться, что сведения о состоянии сбрасываются. С помощью этого параметра декодировщик игнорирует недопустимые байты в конце блока данных и очищает внутренний буфер.

Чтобы вычислить точный размер массива, который GetChars требуется для хранения полученных символов, приложение должно использовать GetCharCount.

Если GetChars вызывается с flush для false, декодатор сохраняет конечные байты в конце блока данных во внутреннем буфере и использует их в следующей операции декодирования. Приложение должно вызывать GetCharCount в блоке данных непосредственно перед вызовом GetChars в одном блоке, чтобы все конечные байты из предыдущего блока были включены в вычисление.

Если приложение предназначено для преобразования множества сегментов входного потока, рассмотрите возможность использования метода Convert. GetChars вызовет исключение, если выходной буфер недостаточно велик, но Convert заполняет максимальное пространство и возвращает записанные байты, если выходной массив позволяет по крайней мере два символа. Дополнительные комментарии см. в разделе Encoding.GetChars.

См. также раздел

Применяется к

.NET 9 и другие версии
Продукт Версии
.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 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