Encoder.GetByteCount Метод

Определение

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

Перегрузки

Имя Описание
GetByteCount(ReadOnlySpan<Char>, Boolean)

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

GetByteCount(Char*, Int32, Boolean)

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

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

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

Комментарии

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

Чтобы вычислить точный размер массива, необходимый GetBytes для хранения результирующего байта, приложение должно использовать GetByteCount.

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

GetByteCount(ReadOnlySpan<Char>, Boolean)

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

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

public:
 virtual int GetByteCount(ReadOnlySpan<char> chars, bool flush);
public virtual int GetByteCount(ReadOnlySpan<char> chars, bool flush);
abstract member GetByteCount : ReadOnlySpan<char> * bool -> int
override this.GetByteCount : ReadOnlySpan<char> * bool -> int
Public Overridable Function GetByteCount (chars As ReadOnlySpan(Of Char), flush As Boolean) As Integer

Параметры

chars
ReadOnlySpan<Char>

Диапазон символов для кодирования.

flush
Boolean

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

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

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

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

GetByteCount(Char*, Int32, Boolean)

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

Внимание

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

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

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

Параметры

chars
Char*

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

count
Int32

Число символов для кодирования.

flush
Boolean

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

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

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

Атрибуты

Исключения

chars имеет значение null (Nothing в Visual Basic .NET).

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

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

-и-

Fallback задан как EncoderExceptionFallback.

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

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

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

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

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

public:
 abstract int GetByteCount(cli::array <char> ^ chars, int index, int count, bool flush);
public abstract int GetByteCount(char[] chars, int index, int count, bool flush);
abstract member GetByteCount : char[] * int * int * bool -> int
Public MustOverride Function GetByteCount (chars As Char(), index As Integer, count As Integer, flush As Boolean) As Integer

Параметры

chars
Char[]

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

index
Int32

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

count
Int32

Число символов для кодирования.

flush
Boolean

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

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

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

Исключения

chars равно null.

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

–или–

index и count не обозначайте допустимый диапазон в chars.

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

-и-

Fallback задан как EncoderExceptionFallback.

Примеры

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

using System;
using System.Text;

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

        Encoder uniEncoder = Encoding.Unicode.GetEncoder();
        int byteCount = uniEncoder.GetByteCount(chars, 0, chars.Length, true);
        Console.WriteLine(
            "{0} bytes needed to encode characters.", byteCount
        );
    }
}

/* This example produces the following output.

8 bytes needed to encode characters.

*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class EncoderExample
    
    Public Shared Sub Main()
        ' Unicode characters.
        ' ChrW(35)  = #
        ' ChrW(37)  = %
        ' ChrW(928) = Pi
        ' ChrW(931) = Sigma
        Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
        
        Dim uniEncoder As Encoder = Encoding.Unicode.GetEncoder()
        Dim byteCount As Integer = _
            uniEncoder.GetByteCount(chars, 0, chars.Length, True)
        Console.WriteLine("{0} bytes needed to encode characters.", byteCount)
    End Sub
End Class
'
'This example produces the following output.
'
'8 bytes needed to encode characters.
'

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

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