UTF7Encoding.GetBytes Метод

Определение

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

Перегрузки

Имя Описание
GetBytes(Char*, Int32, Byte*, Int32)

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

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

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

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

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

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

Внимание

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

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

public:
 override int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
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);
[System.CLSCompliant(false)]
public override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int

Параметры

chars
Char*

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

charCount
Int32

Число символов для кодирования.

bytes
Byte*

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

byteCount
Int32

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

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

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

Атрибуты

Исключения

chars is null (Nothing).

–или–

bytes is null (Nothing).

charCount или byteCount меньше нуля.

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

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

-и-

EncoderFallback задан как EncoderExceptionFallback.

Комментарии

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

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

Note

UTF7Encoding не предоставляет обнаружение ошибок. Недопустимые символы кодируются как измененный базовый 64-й символ. По соображениям безопасности приложения рекомендуется использовать UTF8EncodingUnicodeEncodingили UTF32Encoding включить обнаружение ошибок.

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

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

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

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

public:
 override int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : char[] * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

Параметры

chars
Char[]

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

charIndex
Int32

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

charCount
Int32

Число символов для кодирования.

bytes
Byte[]

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

byteIndex
Int32

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

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

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

Исключения

chars is null (Nothing).

–или–

bytes is null (Nothing).

charIndex или charCountbyteIndex меньше нуля.

–или–

charIndex и charCount не обозначайте допустимый диапазон в chars.

–или–

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

bytes не имеет достаточной емкости от byteIndex конца массива для размещения результирующего байта.

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

-и-

EncoderFallback задан как EncoderExceptionFallback.

Примеры

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

using System;
using System.Text;

class UTF7EncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UTF7Encoding utf7 = new UTF7Encoding();
        
        int byteCount = utf7.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf7.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();
    }
}
Imports System.Text
Imports Microsoft.VisualBasic.strings

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        ' Unicode characters.
        ' ChrW(35)  = #
        ' ChrW(37)  = %
        ' ChrW(928) = Pi
        ' ChrW(931) = Sigma
        Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
        
        Dim utf7 As New UTF7Encoding()
        
        Dim byteCount As Integer = utf7.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf7.GetBytes(chars, 1, 2, bytes, 0)
        
        Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
        
        Console.Write("Encoded bytes: ")
        Dim b As Byte
        For Each b In  bytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()
    End Sub
End Class

Комментарии

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

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

Note

UTF7Encoding не предоставляет обнаружение ошибок. Недопустимые символы кодируются как измененный базовый 64-й символ. По соображениям безопасности приложения рекомендуется использовать UTF8EncodingUnicodeEncodingили UTF32Encoding включить обнаружение ошибок.

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

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

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

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

public:
 override int GetBytes(System::String ^ s, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (s As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

Параметры

s
String

Содержащий String набор символов для кодирования.

charIndex
Int32

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

charCount
Int32

Число символов для кодирования.

bytes
Byte[]

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

byteIndex
Int32

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

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

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

Атрибуты

Исключения

s is null (Nothing).

–или–

bytes is null (Nothing).

charIndex или charCountbyteIndex меньше нуля.

–или–

charIndex и charCount не обозначайте допустимый диапазон в s.

–или–

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

bytes не имеет достаточной емкости от byteIndex конца массива для размещения результирующего байта.

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

-и-

EncoderFallback задан как EncoderExceptionFallback.

Примеры

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

using System;
using System.Text;

class UTF7EncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UTF7Encoding utf7 = new UTF7Encoding();
        
        int byteCount = utf7.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf7.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();
    }
}
Imports System.Text
Imports Microsoft.VisualBasic.strings

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        ' Unicode characters.
        ' ChrW(35)  = #
        ' ChrW(37)  = %
        ' ChrW(928) = Pi
        ' ChrW(931) = Sigma
        Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
        
        Dim utf7 As New UTF7Encoding()
        
        Dim byteCount As Integer = utf7.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf7.GetBytes(chars, 1, 2, bytes, 0)
        
        Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
        
        Console.Write("Encoded bytes: ")
        Dim b As Byte
        For Each b In  bytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()
    End Sub
End Class

Комментарии

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

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

Note

UTF7Encoding не предоставляет обнаружение ошибок. Недопустимые символы кодируются как измененный базовый 64-й символ. По соображениям безопасности приложения рекомендуется использовать UTF8EncodingUnicodeEncodingили UTF32Encoding включить обнаружение ошибок.

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

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