Поделиться через


Decoder.GetCharCount Метод

Определение

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

Перегрузки

GetCharCount(ReadOnlySpan<Byte>, Boolean)

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

GetCharCount(Byte*, Int32, Boolean)

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

GetCharCount(Byte[], Int32, Int32)

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

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

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

GetCharCount(ReadOnlySpan<Byte>, Boolean)

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

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

public:
 virtual int GetCharCount(ReadOnlySpan<System::Byte> bytes, bool flush);
public virtual int GetCharCount (ReadOnlySpan<byte> bytes, bool flush);
abstract member GetCharCount : ReadOnlySpan<byte> * bool -> int
override this.GetCharCount : ReadOnlySpan<byte> * bool -> int
Public Overridable Function GetCharCount (bytes As ReadOnlySpan(Of Byte), flush As Boolean) As Integer

Параметры

bytes
ReadOnlySpan<Byte>

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

flush
Boolean

true для имитации внутреннего состояния кодировщика после вычисления; в противном случае false.

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

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

Комментарии

Этот метод не влияет на состояние декодера.

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

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

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

GetCharCount(Byte*, Int32, Boolean)

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

Важно!

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

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

public:
 virtual int GetCharCount(System::Byte* bytes, int count, bool flush);
[System.CLSCompliant(false)]
public virtual int GetCharCount (byte* bytes, int count, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetCharCount (byte* bytes, int count, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetCharCount (byte* bytes, int count, bool flush);
[<System.CLSCompliant(false)>]
abstract member GetCharCount : nativeptr<byte> * int * bool -> int
override this.GetCharCount : nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetCharCount : nativeptr<byte> * int * bool -> int
override this.GetCharCount : nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetCharCount : nativeptr<byte> * int * bool -> int
override this.GetCharCount : nativeptr<byte> * int * bool -> int

Параметры

bytes
Byte*

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

count
Int32

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

flush
Boolean

true для имитации внутреннего состояния кодировщика после вычисления; в противном случае false.

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

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

Атрибуты

Исключения

bytes null (Nothing в Visual Basic .NET).

count меньше нуля.

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

-и-

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

Комментарии

Этот метод не влияет на состояние декодера.

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

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

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

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

GetCharCount(Byte[], Int32, Int32)

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

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

public:
 abstract int GetCharCount(cli::array <System::Byte> ^ bytes, int index, int count);
public abstract int GetCharCount (byte[] bytes, int index, int count);
abstract member GetCharCount : byte[] * int * int -> int
Public MustOverride Function GetCharCount (bytes As Byte(), index As Integer, count As Integer) As Integer

Параметры

bytes
Byte[]

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

index
Int32

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

count
Int32

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

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

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

Исключения

bytes null (Nothing).

index или count меньше нуля.

-или-

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

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

-и-

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

Примеры

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

using namespace System;
using namespace System::Text;
int main()
{
   array<Byte>^bytes = {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 );
   Console::WriteLine( "{0} characters needed to decode bytes.", charCount );
}

/* This code example produces the following output.

7 characters needed to decode bytes.

*/
using System;
using System.Text;

class DecoderExample {
    public static void Main() {
        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);
        Console.WriteLine(
            "{0} characters needed to decode bytes.", charCount
        );
    }
}

/* This code example produces the following output.

7 characters needed to decode bytes.

*/
Imports System.Text

Class DecoderExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte = { _
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0 _
        }
        
        Dim uniDecoder As Decoder = Encoding.Unicode.GetDecoder()
        Dim charCount As Integer = uniDecoder.GetCharCount(bytes, 0, bytes.Length)
        Console.WriteLine("{0} characters needed to decode bytes.", charCount)
    End Sub
End Class

'This code example produces the following output.
'
'7 characters needed to decode bytes.
'

Комментарии

Этот метод не влияет на состояние декодера.

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

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

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

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

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

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

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

public:
 virtual int GetCharCount(cli::array <System::Byte> ^ bytes, int index, int count, bool flush);
public virtual int GetCharCount (byte[] bytes, int index, int count, bool flush);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetCharCount (byte[] bytes, int index, int count, bool flush);
abstract member GetCharCount : byte[] * int * int * bool -> int
override this.GetCharCount : byte[] * int * int * bool -> int
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetCharCount : byte[] * int * int * bool -> int
override this.GetCharCount : byte[] * int * int * bool -> int
Public Overridable Function GetCharCount (bytes As Byte(), index As Integer, count As Integer, flush As Boolean) As Integer

Параметры

bytes
Byte[]

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

index
Int32

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

count
Int32

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

flush
Boolean

true для имитации внутреннего состояния кодировщика после вычисления; в противном случае false.

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

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

Атрибуты

Исключения

bytes null (Nothing).

index или count меньше нуля.

-или-

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

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

-и-

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

Комментарии

Этот метод не влияет на состояние декодера.

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

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

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

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