Поделиться через


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)

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

Важно!

Этот 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)]
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)>]
[<System.Security.SecurityCritical>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
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

Параметры

chars
Char*

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

charCount
Int32

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

bytes
Byte*

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

byteCount
Int32

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

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

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

Атрибуты

Исключения

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

-или-

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

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

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

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

- и -

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

Комментарии

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

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

Примечание

UTF7Encoding не обеспечивает обнаружение ошибок. Недопустимые символы кодируются как измененный базовый символ 64. В целях безопасности приложениям рекомендуется использовать UTF8Encoding, UnicodeEncodingили UTF32Encoding и включить обнаружение ошибок.

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

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

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

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

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

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 имеет значение null (Nothing).

-или-

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

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

-или-

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

-или-

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

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

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

- и -

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

Примеры

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

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   UTF7Encoding^ utf7 = gcnew UTF7Encoding;
   int byteCount = utf7->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = utf7->GetBytes( chars, 1, 2, bytes, 0 );
   Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount );
   Console::Write( "Encoded bytes: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

   Console::WriteLine();
}
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 соответственно.

Примечание

UTF7Encoding не обеспечивает обнаружение ошибок. Недопустимые символы кодируются как измененный базовый символ 64. В целях безопасности приложениям рекомендуется использовать UTF8Encoding, UnicodeEncodingили UTF32Encoding и включить обнаружение ошибок.

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

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

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

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

Кодирует набор символов из заданного объекта 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 имеет значение null (Nothing).

-или-

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

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

-или-

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

-или-

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

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

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

- и -

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

Примеры

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

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   UTF7Encoding^ utf7 = gcnew UTF7Encoding;
   int byteCount = utf7->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = utf7->GetBytes( chars, 1, 2, bytes, 0 );
   Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount );
   Console::Write( "Encoded bytes: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

   Console::WriteLine();
}
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 соответственно.

Примечание

UTF7Encoding не обеспечивает обнаружение ошибок. Недопустимые символы кодируются как измененный базовый символ 64. В целях безопасности приложениям рекомендуется использовать UTF8Encoding, UnicodeEncodingили UTF32Encoding и включить обнаружение ошибок.

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

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