UTF8Encoding.GetBytes Метод

Определение

Кодирует набор символов в последовательность байтов.

Перегрузки

GetBytes(String)

Кодирует символы из указанного объекта String в последовательность байтов.

GetBytes(ReadOnlySpan<Char>, Span<Byte>)

Кодирует заданный диапазон символов в заданный диапазон байтов.

GetBytes(Char*, Int32, Byte*, Int32)

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

GetBytes(Char[], Int32, Int32, Byte[], Int32)

Кодирует набор символов из заданного массива символов в указанный массив байтов.

GetBytes(String, Int32, Int32, Byte[], Int32)

Кодирует набор символов из заданного объекта String в указанный массив байтов.

GetBytes(String)

Кодирует символы из указанного объекта String в последовательность байтов.

public override byte[] GetBytes (string s);

Параметры

s
String

Кодируемая строка символов.

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

Byte[]

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

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

.NET Framework 1.1
Продукт Версии
.NET Framework 1.1

GetBytes(ReadOnlySpan<Char>, Span<Byte>)

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

Кодирует заданный диапазон символов в заданный диапазон байтов.

public override int GetBytes (ReadOnlySpan<char> chars, Span<byte> bytes);

Параметры

chars
ReadOnlySpan<Char>

Кодируемый диапазон символов.

bytes
Span<Byte>

Диапазон, содержащий результирующий набор байтов.

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

Фактическое число байтов, записанных в bytes.

Комментарии

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

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

Данные для преобразования, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что их необходимо разделить на более мелкие блоки, используйте Decoder или Encoder , возвращаемые методом GetDecoder или методом GetEncoder соответственно.

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

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

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

GetBytes(Char*, Int32, Byte*, Int32)

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

Важно!

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

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

[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);

Параметры

chars
Char*

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

charCount
Int32

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

bytes
Byte*

Указатель на положение, с которого начинается запись результирующей последовательности байтов.

byteCount
Int32

Максимальное число байтов для записи.

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

Фактическое число байтов, записанных в местоположение, указанное с помощью параметра bytes.

Атрибуты

Исключения

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

-или-

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

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

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

-или-

byteCount меньше результирующего числа байтов.

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

- и -

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

Комментарии

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

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

Данные для преобразования, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что их необходимо разделить на более мелкие блоки, используйте Decoder или Encoder , возвращаемые методом GetDecoder или методом GetEncoder соответственно.

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

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

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

.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

GetBytes(Char[], Int32, Int32, Byte[], Int32)

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

Кодирует набор символов из заданного массива символов в указанный массив байтов.

public override int GetBytes (char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex);

Параметры

chars
Char[]

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

charIndex
Int32

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

charCount
Int32

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

bytes
Byte[]

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

byteIndex
Int32

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

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

Фактическое число байтов, записанных в bytes.

Исключения

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

-или-

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

Значение параметра charIndex, charCount или byteIndex меньше нуля.

-или-

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

-или-

Значение параметра byteIndex не является допустимым индексом в bytes.

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

-или-

Недостаточно емкости bytes от byteIndex до конца массива для размещения полученных байтов.

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

- и -

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

Примеры

В следующем примере метод используется GetBytes для кодирования диапазона символов из строки и сохраняет закодированные байты в диапазоне элементов в массиве байтов.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "UTF8 Encoding Example";
        
        UTF8Encoding utf8 = new UTF8Encoding();
        
        int byteCount = utf8.GetByteCount(chars.ToCharArray(), 0, 13);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf8.GetBytes(chars, 0, 13, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode string.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}

Комментарии

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

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

Данные для преобразования, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или, если объем данных настолько велик, что их необходимо разделить на более мелкие блоки, используйте Decoder или , предоставленные Encoder методом GetDecoder или методом GetEncoder соответственно.

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

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

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

.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

GetBytes(String, Int32, Int32, Byte[], Int32)

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

Кодирует набор символов из заданного объекта String в указанный массив байтов.

public override int GetBytes (string s, int charIndex, int charCount, byte[] bytes, int byteIndex);

Параметры

s
String

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

charIndex
Int32

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

charCount
Int32

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

bytes
Byte[]

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

byteIndex
Int32

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

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

Фактическое число байтов, записанных в bytes.

Исключения

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

-или-

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

Значение параметра charIndex, charCount или byteIndex меньше нуля.

-или-

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

-или-

Значение параметра byteIndex не является допустимым индексом в bytes.

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

-или-

Недостаточно емкости bytes от byteIndex до конца массива для размещения полученных байтов.

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

- и -

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

Примеры

В следующем примере метод используется GetBytes для кодирования диапазона элементов из массива символов Юникода и хранения закодированных байтов в диапазоне элементов в массиве байтов.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UTF8Encoding utf8 = new UTF8Encoding();
        
        int byteCount = utf8.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf8.GetBytes(chars, 1, 2, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}

Комментарии

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

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

Преобразуемые данные, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или, если объем данных настолько велик, что их необходимо разделить на более мелкие блоки, используйте Decoder или Encoder , предоставленные методом GetDecoder или методом GetEncoder соответственно.

Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. За вставку заготовки в начало потока байтов (например, в начале ряда байтов для записи в файл) отвечает разработчик. Метод GetBytes не добавляет заготовку к началу последовательности закодированных байтов.

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

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

.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