UTF32Encoding.GetByteCount Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вычисляет количество байтов, созданных путем кодирования набора символов.
Перегрузки
| Имя | Описание |
|---|---|
| GetByteCount(String) |
Вычисляет количество байтов, созданных путем кодирования символов в указанном.String |
| GetByteCount(Char*, Int32) |
Вычисляет количество байтов, созданных путем кодирования набора символов, начиная с указанного указателя символов. |
| GetByteCount(Char[], Int32, Int32) |
Вычисляет количество байтов, созданных путем кодирования набора символов из указанного массива символов. |
GetByteCount(String)
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- UTF32Encoding.cs
- Исходный код:
- 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
- Исходный код:
- 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
- Исходный код:
- 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 методом.