UnicodeEncoding.GetByteCount Метод

Определение

Подсчитывает количество байтов, полученных при кодировании набора символов.Calculates the number of bytes produced by encoding a set of characters.

Перегрузки

GetByteCount(String)

Вычисляет количество байтов, полученных при кодировании символов в указанной строке.Calculates the number of bytes produced by encoding the characters in the specified string.

GetByteCount(Char*, Int32)

Вычисляет число байтов, полученных при кодировании набора символов начиная с заданного указателя символа.Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.

GetByteCount(Char[], Int32, Int32)

Вычисляет число байтов, полученных при кодировании набора символов из указанного массива символов.Calculates the number of bytes produced by encoding a set of characters from the specified character array.

GetByteCount(String)

Вычисляет количество байтов, полученных при кодировании символов в указанной строке.Calculates the number of bytes produced by encoding the characters in the specified string.

public:
 override int GetByteCount(System::String ^ s);
public override int GetByteCount (string s);
override this.GetByteCount : string -> int
Public Overrides Function GetByteCount (s As String) As Integer

Параметры

s
String

Строка, содержащая кодируемый набор символов.The string that contains the set of characters to encode.

Возвраты

Число байтов, полученных при кодировании заданных символов.The number of bytes produced by encoding the specified characters.

Исключения

snull.s is null.

Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

Обнаружение ошибок включено, и s содержит недопустимую последовательность символов.Error detection is enabled, and s contains an invalid sequence of characters.

Произошла отработка отказа (см. полное объяснение в статье Кодировка символов в .NET Framework)A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation) - и --and- Параметру EncoderFallback задается значение EncoderExceptionFallback.EncoderFallback is set to EncoderExceptionFallback.

Примеры

В следующем примере вызываются GetMaxByteCount методы GetByteCount(String) и для вычисления максимального и фактического числа байтов, необходимых для кодирования строки.The following example calls the GetMaxByteCount and GetByteCount(String) methods to calculate the maximum and actual number of bytes required to encode a string. Он также отображает фактическое число байтов, необходимых для хранения потока байтов с меткой порядка байтов.It also displays the actual number of bytes required to store a byte stream with a byte order mark.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF-16 Encoding Example";
        Encoding unicode = Encoding.Unicode;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF-16 Encoding Example':
//          Maximum:         48
//          Actual:          46
//          Actual with BOM: 48
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF-16 Encoding Example"
        Dim unicode As Encoding = Encoding.Unicode

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF-16 Encoding Example':
'          Maximum:         48
'          Actual:          46
'          Actual with BOM: 48

Комментарии

Чтобы вычислить точный размер массива, GetBytes необходимый для хранения результирующих байтов, GetByteCount вызовите метод.To calculate the exact array size required by GetBytes to store the resulting bytes, you call the GetByteCount method. Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод.To calculate the maximum array size, you call the GetMaxByteCount method. Метод обычно выделяет меньше памяти, в GetMaxByteCount то время как метод обычно выполняется быстрее. GetByteCountThe GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

При обнаружении ошибок недействительная последовательность приводит к тому, что ArgumentExceptionэтот метод выдает исключение.With error detection, an invalid sequence causes this method to throw a ArgumentException. Без обнаружения ошибок недопустимые последовательности пропускаются, и исключение не создается.Without error detection, invalid sequences are ignored, and no exception is thrown.

Важно!

Чтобы обеспечить правильную декодирование закодированных байтов при сохранении их в виде файла или потока, можно добавить префикс потока закодированных байтов в преамбулу.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. Вставка преамбулы в начало потока байтов (например, в начале последовательности байтов для занесения в файл) является обязанностью разработчика, а число байтов в преамбуле не отражается в значении, возвращаемом GetByteCount(String) методом.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount(String) method.

Дополнительно

GetByteCount(Char*, Int32)

Важно!

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

Вычисляет число байтов, полученных при кодировании набора символов начиная с заданного указателя символа.Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.

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

Параметры

chars
Char*

Указатель на первый кодируемый символ.A pointer to the first character to encode.

count
Int32

Число кодируемых символов.The number of characters to encode.

Возвраты

Число байтов, полученных при кодировании заданных символов.The number of bytes produced by encoding the specified characters.

Атрибуты

Исключения

Свойство chars имеет значение null.chars is null.

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

- или --or- Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

Включена функция обнаружения ошибок, chars содержит недопустимую последовательность символов.Error detection is enabled and chars contains an invalid sequence of characters.

Произошла отработка отказа (см. полное объяснение в статье Кодировка символов в .NET Framework)A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation) - и --and- Параметру EncoderFallback задается значение EncoderExceptionFallback.EncoderFallback is set to EncoderExceptionFallback.

Комментарии

Чтобы вычислить точный размер массива GetBytes , для которого требуется сохранить полученные байты, GetByteCount вызовите метод.To calculate the exact array size that GetBytes requires to store the resulting bytes, you call the GetByteCount method. Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод.To calculate the maximum array size, you call the GetMaxByteCount method. Метод обычно выделяет меньше памяти, в GetMaxByteCount то время как метод обычно выполняется быстрее. GetByteCountThe GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

При обнаружении ошибок недействительная последовательность приводит к тому, что ArgumentExceptionэтот метод выдает исключение.With error detection, an invalid sequence causes this method to throw a ArgumentException. Без обнаружения ошибок недопустимые последовательности пропускаются, и исключение не создается.Without error detection, invalid sequences are ignored, and no exception is thrown.

Важно!

Чтобы обеспечить правильную декодирование закодированных байтов при сохранении их в виде файла или потока, можно добавить префикс потока закодированных байтов в преамбулу.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. Вставка преамбулы в начало потока байтов (например, в начале последовательности байтов для занесения в файл) является обязанностью разработчика, а число байтов в преамбуле не отражается в значении, возвращаемом GetByteCount методом.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble is not reflected in the value returned by the GetByteCount method.

Безопасность

SecurityCriticalAttribute
Требуется полное доверие для немедленного вызывающего объекта.Requires full trust for the immediate caller. Этот член не может использоваться частично доверенным или прозрачным кодом.This member cannot be used by partially trusted or transparent code.

Дополнительно

GetByteCount(Char[], Int32, Int32)

Вычисляет число байтов, полученных при кодировании набора символов из указанного массива символов.Calculates the number of bytes produced by encoding a set of characters from the specified character array.

public:
 override int GetByteCount(cli::array <char> ^ chars, int index, int count);
public override int GetByteCount (char[] chars, int index, int count);
override this.GetByteCount : char[] * int * int -> int
Public Overrides Function GetByteCount (chars As Char(), index As Integer, count As Integer) As Integer

Параметры

chars
Char[]

Массив символов, содержащий набор кодируемых символов.The character array containing the set of characters to encode.

index
Int32

Индекс первого кодируемого символа.The index of the first character to encode.

count
Int32

Число кодируемых символов.The number of characters to encode.

Возвраты

Число байтов, полученных при кодировании заданных символов.The number of bytes produced by encoding the specified characters.

Исключения

chars имеет значение null (Nothing).chars is null (Nothing).

Значение параметраindex или count меньше нуля.index or count is less than zero.

- или --or- Параметрыindex и count не указывают допустимый диапазон в chars.index and count do not denote a valid range in chars.

- или --or- Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.The resulting number of bytes is greater than the maximum number that can be returned as an integer.

Обнаружение ошибок включено, и chars содержит недопустимую последовательность символов.Error detection is enabled, and chars contains an invalid sequence of characters.

Произошла отработка отказа (см. полное объяснение в статье Кодировка символов в .NET Framework)A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation) - и --and- Параметру EncoderFallback задается значение EncoderExceptionFallback.EncoderFallback is set to EncoderExceptionFallback.

Примеры

В следующем примере массив заполняется прописными буквами латинского алфавита и строчными буквами GetByteCount(Char[], Int32, Int32) , а затем вызывается метод для определения числа байтов, необходимых для кодирования символов нижнего регистра строчных букв.The following example populates an array with a Latin uppercase and lowercase characters and calls the GetByteCount(Char[], Int32, Int32) method to determine the number of bytes needed to encode the Latin lowercase characters. Затем эти сведения отображаются вместе с общим числом байтов, необходимых при добавлении метки порядка байтов.It then displays this information along with the total number of bytes needed if a byte order mark is added. Он сравнивает это число со значением, возвращенным GetMaxByteCount методом, что указывает на максимальное число байтов, необходимых для кодирования символов нижнего регистра латиницы.It compares this number with the value returned by the GetMaxByteCount method, which indicates maximum number of bytes needed to encode the Latin lowercase characters. В следующем примере массив заполняется сочетанием греческого и кириллицы-символов и вызывает GetByteCount(Char[], Int32, Int32) метод, чтобы определить число байтов, необходимое для кодирования символов кириллицы.The following example populates an array with a combination of Greek and Cyrillic characters and calls the GetByteCount(Char[], Int32, Int32) method to determine the number of bytes needed to encode the Cyrillic characters. Затем эти сведения отображаются вместе с общим числом байтов, необходимых при добавлении метки порядка байтов.It then displays this information along with the total number of bytes needed if a byte order mark is added. Он сравнивает это число со значением, возвращенным GetMaxByteCount методом, который указывает максимальное число байтов, необходимое для кодирования символов кириллицы.It compares this number with the value returned by the GetMaxByteCount method, which indicates maximum number of bytes needed to encode the Cyrillic characters.

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 unicode = Encoding.Unicode;

      // 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}",
                        unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          unicode.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            54
//          Actual:             52
//          Actual with BOM:    54
Imports System.Text

Module Example
   Public Sub Main()
      Dim uppercaseStart As Integer = &h0041
      Dim uppercaseEnd As Integer = &h005a
      Dim lowercaseStart As Integer = &h0061
      Dim lowercaseEnd As Integer = &h007a
      ' Instantiate a UTF8 encoding object with BOM support.
      Dim unicode As Encoding = Encoding.Unicode
      
      ' Populate array with characters.
      Dim chars(lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 1) As Char
      Dim index As Integer = 0
      For ctr As Integer = uppercaseStart To uppercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next
      For ctr As Integer = lowercaseStart To lowercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next

      ' Display the bytes needed for the lowercase characters.
        Console.WriteLine("Bytes needed for lowercase Latin characters:")
        Console.WriteLine("   Maximum:         {0,5:N0}",
                          unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            unicode.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            54
'          Actual:             52
'          Actual with BOM:    54

Комментарии

Чтобы вычислить точный размер массива, GetBytes необходимый для хранения результирующих байтов, приложение использует GetByteCount.To calculate the exact array size required by GetBytes to store the resulting bytes, the application uses GetByteCount. Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод.To calculate the maximum array size, you call the GetMaxByteCount method. Метод обычно выделяет меньше памяти, в GetMaxByteCount то время как метод обычно выполняется быстрее. GetByteCountThe GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

При включенном обнаружении ошибок недействительная последовательность приводит к тому, ArgumentExceptionчто этот метод выдает исключение.With error detection enabled, an invalid sequence causes this method to throw an ArgumentException. Без обнаружения ошибок недопустимые последовательности пропускаются, и исключение не создается.Without error detection, invalid sequences are ignored, and no exception is thrown.

Чтобы обеспечить правильную декодирование закодированных байтов при сохранении их в виде файла или потока, можно добавить префикс потока закодированных байтов в преамбулу.To ensure that the encoded bytes are decoded properly when they are saved as a file or as a stream, you can prefix a stream of encoded bytes with a preamble. Вставка преамбулы в начало потока байтов (например, в начале последовательности байтов для занесения в файл) является обязанностью разработчика, а число байтов в преамбуле не отражается в значении, возвращаемом GetByteCount(Char[], Int32, Int32) методом.Inserting the preamble at the beginning of a byte stream (such as at the beginning of a series of bytes to be written to a file) is the developer's responsibility, and the number of bytes in the preamble Is not reflected in the value returned by the GetByteCount(Char[], Int32, Int32) method.

Дополнительно

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