UTF8Encoding.GetByteCount Метод

Определение

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

Перегрузки

GetByteCount(ReadOnlySpan<Char>)

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

GetByteCount(String)

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

GetByteCount(Char*, Int32)

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

GetByteCount(Char[], Int32, Int32)

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

GetByteCount(ReadOnlySpan<Char>)

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

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

public override int GetByteCount (ReadOnlySpan<char> chars);

Параметры

chars
ReadOnlySpan<Char>

Диапазон, содержащий кодируемый набор символов.

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

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

Исключения

Обнаружение ошибок включено, и chars содержит недопустимую последовательность символов.

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

- и -

Параметру EncoderFallback задается значение EncoderExceptionFallback.

Комментарии

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

При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод создает ArgumentException исключение. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.

Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. Вставка статьи в начале потока байтов (например, в начале ряда байтов для записи в файл) является ответственностью разработчика, а количество байтов в этой части не отражается в значении, возвращаемом методом GetByteCount .

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

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

GetByteCount(String)

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

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

public override int GetByteCount (string chars);

Параметры

chars
String

Объект String, содержащий кодируемый набор символов.

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

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

Исключения

chars имеет значение null.

Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.

Обнаружение ошибок включено, и chars содержит недопустимую последовательность символов.

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

- и -

Параметру EncoderFallback задается значение EncoderExceptionFallback.

Примеры

В следующем примере вызываются GetMaxByteCount методы и GetByteCount(String) для вычисления максимального и фактического количества байтов, необходимых для кодирования строки. Он также отображает фактическое количество байтов, необходимых для хранения потока байтов с меткой порядка байтов.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF8 Encoding Example";
        Encoding utf8 = Encoding.UTF8;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF8 Encoding Example':
//          Maximum:         66
//          Actual:          21
//          Actual with BOM: 24

Комментарии

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

При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод создает ArgumentException исключение. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.

Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. Вставка статьи в начале потока байтов (например, в начале ряда байтов для записи в файл) является ответственностью разработчика, а количество байтов в этой части не отражается в значении, возвращаемом методом GetByteCount .

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

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

.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

GetByteCount(Char*, Int32)

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

Важно!

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

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

[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);

Параметры

chars
Char*

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

count
Int32

Число кодируемых символов.

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

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

Атрибуты

Исключения

chars имеет значение null.

Значение параметра count меньше нуля.

-или-

Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.

Обнаружение ошибок включено, и chars содержит недопустимую последовательность символов.

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

- и -

Параметру EncoderFallback задается значение EncoderExceptionFallback.

Комментарии

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

При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод создает ArgumentException исключение. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.

Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. Вставка статьи в начале потока байтов (например, в начале ряда байтов для записи в файл) является ответственностью разработчика, а количество байтов в этой части не отражается в значении, возвращаемом методом GetByteCount .

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

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

.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.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetByteCount(Char[], Int32, Int32)

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

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

public override int GetByteCount (char[] chars, int index, int count);

Параметры

chars
Char[]

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

index
Int32

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

count
Int32

Число кодируемых символов.

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

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

Исключения

chars имеет значение null.

Значение параметра index или count меньше нуля.

-или-

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

-или-

Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.

Обнаружение ошибок включено, и chars содержит недопустимую последовательность символов.

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

- и -

Свойство EncoderFallback имеет значение EncoderExceptionFallback.

Примеры

В следующем примере массив заполняется латинскими прописными и строчными буквами и вызывается GetByteCount(Char[], Int32, Int32) метод для определения количества байтов, необходимых для кодирования символов нижнего регистра. Затем она отображает эти сведения вместе с общим количеством байтов, необходимым при добавлении метки порядка байтов. Он сравнивает это число со значением, возвращаемым методом GetMaxByteCount , которое указывает максимальное количество байтов, необходимое для кодирования символов в нижнем регистре.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      int uppercaseStart = 0x0041;
      int uppercaseEnd = 0x005a;
      int lowercaseStart = 0x0061;
      int lowercaseEnd = 0x007a;
      // Instantiate a UTF8 encoding object with BOM support.
      Encoding utf8 = new UTF8Encoding(true);

      // Populate array with characters.
      char[] chars = new char[lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 2];
      int index = 0;
      for (int ctr = uppercaseStart; ctr <= uppercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }
      for (int ctr = lowercaseStart; ctr <= lowercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }

      // Display the bytes needed for the lowercase characters.
      Console.WriteLine("Bytes needed for lowercase Latin characters:");
      Console.WriteLine("   Maximum:         {0,5:N0}",
                        utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          utf8.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            81
//          Actual:             26
//          Actual with BOM:    29

Комментарии

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

При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод создает ArgumentException исключение. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.

Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. Вставка статьи в начале потока байтов (например, в начале ряда байтов для записи в файл) является ответственностью разработчика, а количество байтов в этой части не отражается в значении, возвращаемом методом GetByteCount .

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

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

.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