UTF32Encoding.GetByteCount Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Подсчитывает количество байтов, полученных при кодировании набора символов.
Перегрузки
GetByteCount(String) |
Вычисляет количество байтов, полученных при кодировании символов в заданном объекте String. |
GetByteCount(Char*, Int32) |
Вычисляет число байтов, полученных при кодировании набора символов начиная с заданного указателя символа. |
GetByteCount(Char[], Int32, Int32) |
Вычисляет число байтов, полученных при кодировании набора символов из указанного массива символов. |
GetByteCount(String)
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- UTF32Encoding.cs
Вычисляет количество байтов, полученных при кодировании символов в заданном объекте 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
имеет значение null
.
Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.
Обнаружение ошибок включено, и s
содержит недопустимую последовательность символов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Примеры
В следующем примере вызывается GetMaxByteCount метод и GetByteCount(String) для вычисления максимального и фактического количества байтов, необходимых для кодирования строки. Также отображается фактическое количество байтов, необходимых для хранения потока байтов с меткой порядка байтов.
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
String chars = "UTF-32 Encoding Example";
Encoding enc = Encoding.UTF32;
Console.WriteLine("Bytes needed to encode '{0}':", chars);
Console.WriteLine(" Maximum: {0}",
enc.GetMaxByteCount(chars.Length));
Console.WriteLine(" Actual: {0}",
enc.GetByteCount(chars));
Console.WriteLine(" Actual with BOM: {0}",
enc.GetByteCount(chars) + enc.GetPreamble().Length);
}
}
// The example displays the following output:
// Bytes needed to encode 'UTF-32 Encoding Example':
// Maximum: 96
// Actual: 92
// Actual with BOM: 96
Imports System.Text
Module Example
Public Sub Main()
Dim chars As String = "UTF-32 Encoding Example"
Dim enc As Encoding = Encoding.UTF32
Console.WriteLine("Bytes needed to encode '{0}':", chars)
Console.WriteLine(" Maximum: {0}",
enc.GetMaxByteCount(chars.Length))
Console.WriteLine(" Actual: {0}",
enc.GetByteCount(chars))
Console.WriteLine(" Actual with BOM: {0}",
enc.GetByteCount(chars) + enc.GetPreamble().Length)
End Sub
End Module
' The example displays the following output:
' Bytes needed to encode 'UTF-32 Encoding Example':
' Maximum: 96
' Actual: 92
' Actual with BOM: 96
Комментарии
Чтобы вычислить точный размер массива, необходимый GetBytes для хранения результирующего байта, вызовите GetByteCount метод . Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод . Метод GetByteCount обычно выделяет меньше памяти, в то время как GetMaxByteCount метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод вызывает исключение ArgumentException. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. Вставка заготовки в начале потока байтов (например, в начале ряда байтов, записываемых в файл) лежит на разработчике, а количество байтов в ней не отражается в значении, возвращаемом методом GetByteCount .
См. также раздел
Применяется к
GetByteCount(Char*, Int32)
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- UTF32Encoding.cs
Важно!
Этот API несовместим с CLS.
Вычисляет число байтов, полученных при кодировании набора символов начиная с заданного указателя символа.
public:
override int GetByteCount(char* chars, int count);
[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.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
Параметры
- chars
- Char*
Указатель на первый кодируемый символ.
- count
- Int32
Число кодируемых символов.
Возвращаемое значение
Число байтов, полученных при кодировании заданных символов.
- Атрибуты
Исключения
chars
имеет значение null
.
Значение параметра count
меньше нуля.
-или-
Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.
Обнаружение ошибок включено, и chars
содержит недопустимую последовательность символов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Комментарии
Чтобы вычислить точный размер массива, необходимый GetBytes для хранения результирующего байта, вызовите GetByteCount метод . Чтобы вычислить максимальный размер массива, вызывается GetMaxByteCount. Метод GetByteCount обычно выделяет меньше памяти, в то время как GetMaxByteCount метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод вызывает исключение ArgumentException. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. Вставка заготовки в начале потока байтов (например, в начале ряда байтов, записываемых в файл) лежит на разработчике, а количество байтов в ней не отражается в значении, возвращаемом методом GetByteCount .
См. также раздел
Применяется к
GetByteCount(Char[], Int32, Int32)
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- UTF32Encoding.cs
Вычисляет число байтов, полученных при кодировании набора символов из указанного массива символов.
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[]
Массив символов, содержащий набор кодируемых символов.
- index
- Int32
Индекс первого кодируемого символа.
- count
- Int32
Число кодируемых символов.
Возвращаемое значение
Число байтов, полученных при кодировании заданных символов.
Исключения
chars
имеет значение null
.
Значение параметра index
или count
меньше нуля.
-или-
Параметрыindex
и count
не указывают допустимый диапазон в chars
.
-или-
Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.
Обнаружение ошибок включено, и chars
содержит недопустимую последовательность символов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Примеры
В следующем примере массив заполняется латинскими прописными и строчными буквами и вызывается GetByteCount(Char[], Int32, Int32) метод для определения количества байтов, необходимых для кодирования символов латинского нижнего регистра. Затем эта информация отображается вместе с общим количеством байтов, необходимым при добавлении метки порядка байтов. Он сравнивает это число со значением, возвращаемым методом GetMaxByteCount , которое указывает максимальное количество байтов, необходимое для кодирования символов нижнего регистра в латинском регистре. В следующем примере массив заполняется сочетанием греческих и кириллических символов и вызывается 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 enc = Encoding.UTF32;
// 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}",
enc.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
Console.WriteLine(" Actual: {0,5:N0}",
enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1));
Console.WriteLine(" Actual with BOM: {0,5:N0}",
enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1) +
enc.GetPreamble().Length);
}
}
// The example displays the following output:
// Bytes needed for lowercase Latin characters:
// Maximum: 108
// Actual: 104
// Actual with BOM: 108
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 enc As Encoding = Encoding.UTF32
' 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}",
enc.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
Console.WriteLine(" Actual: {0,5:N0}",
enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1))
Console.WriteLine(" Actual with BOM: {0,5:N0}",
enc.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
lowercaseEnd - lowercaseStart + 1) +
enc.GetPreamble().Length)
End Sub
End Module
' The example displays the following output:
' Bytes needed for lowercase Latin characters:
' Maximum: 108
' Actual: 104
' Actual with BOM: 108
Комментарии
Чтобы вычислить точный размер массива, необходимый GetBytes для хранения результирующего байта, вызовите GetByteCount метод . Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод . Метод GetByteCount обычно выделяет меньше памяти, в то время как GetMaxByteCount метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод вызывает исключение ArgumentException. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. Вставка заготовки в начале потока байтов (например, в начале ряда байтов, записываемых в файл) лежит на разработчике, а количество байтов в ней не отражается в значении, возвращаемом методом GetByteCount .