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


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

При переопределении в производном классе вычисляет число байтов, полученных при кодировании набора символов в диапазоне 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

Важно!

Этот 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

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

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 namespace System;
using namespace System::Text;
int main()
{
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   Encoder^ uniEncoder = Encoding::Unicode->GetEncoder();
   int byteCount = uniEncoder->GetByteCount( chars, 0, chars->Length, true );
   Console::WriteLine( "{0} bytes needed to encode characters.", byteCount );
}

/* This code example produces the following output. 

8 bytes needed to encode characters.

*/
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.
'

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

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