UnicodeEncoding.GetBytes Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Кодирует набор символов в последовательность байтов.
Перегрузки
GetBytes(Char[], Int32, Int32, Byte[], Int32) |
Кодирует набор символов из заданного массива символов в указанный массив байтов. |
GetBytes(String, Int32, Int32, Byte[], Int32) |
Кодирует набор символов из заданного объекта String в указанный массив байтов. |
GetBytes(String) |
Кодирует набор символов из заданной строки в указанный массив байтов. |
GetBytes(Char*, Int32, Byte*, Int32) |
Кодирует набор символов, начало которого задается указателем символа, в последовательность байтов, которые сохраняются начиная с заданного указателя байта. |
GetBytes(Char[], Int32, Int32, Byte[], Int32)
- Исходный код:
- UnicodeEncoding.cs
- Исходный код:
- UnicodeEncoding.cs
- Исходный код:
- UnicodeEncoding.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
.
Обнаружение ошибок включено, и chars
содержит недопустимую последовательность символов.
-или-
Недостаточно емкости bytes
от byteIndex
до конца массива для размещения полученных байтов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Примеры
В следующем примере показано, как использовать GetBytes метод для кодирования диапазона символов из String и сохранения закодированных байтов в диапазоне элементов в массиве байтов.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Byte>^bytes;
String^ chars = "Unicode Encoding Example";
UnicodeEncoding^ Unicode = gcnew UnicodeEncoding;
int byteCount = Unicode->GetByteCount( chars->ToCharArray(), 8, 8 );
bytes = gcnew array<Byte>(byteCount);
int bytesEncodedCount = Unicode->GetBytes( chars, 8, 8, bytes, 0 );
Console::WriteLine( "{0} bytes used to encode string.", 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 UnicodeEncodingExample {
public static void Main() {
Byte[] bytes;
String chars = "Unicode Encoding Example";
UnicodeEncoding Unicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars.ToCharArray(), 8, 8);
bytes = new Byte[byteCount];
int bytesEncodedCount = Unicode.GetBytes(chars, 8, 8, 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();
}
}
Imports System.Text
Class UnicodeEncodingExample
Public Shared Sub Main()
Dim bytes() As Byte
Dim chars As String = "Unicode Encoding Example"
Dim uni As New UnicodeEncoding()
Dim byteCount As Integer = uni.GetByteCount(chars.ToCharArray(), 8, 8)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = uni.GetBytes(chars, 8, 8, bytes, 0)
Console.WriteLine("{0} bytes used to encode string.", 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 метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод вызывает исключение ArgumentException. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Преобразуемые данные, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что его необходимо разделить на более мелкие блоки, приложение должно использовать Decoder или , предоставленные Encoder методом GetDecoder или методом GetEncoder соответственно.
Важно!
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. За вставку заготовки в начало потока байтов (например, в начале ряда байтов для записи в файл) отвечает разработчик. Метод GetBytes не добавляет заготовку к началу последовательности закодированных байтов.
См. также раздел
Применяется к
GetBytes(String, Int32, Int32, Byte[], Int32)
- Исходный код:
- UnicodeEncoding.cs
- Исходный код:
- UnicodeEncoding.cs
- Исходный код:
- UnicodeEncoding.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);
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
Строка, содержащая набор символов для кодирования.
- charIndex
- Int32
Индекс первого кодируемого символа.
- charCount
- Int32
Число кодируемых символов.
- bytes
- Byte[]
Массив байтов, в который будет помещена результирующая последовательность байтов.
- byteIndex
- Int32
Индекс, с которого начинается запись результирующей последовательности байтов.
Возвращаемое значение
Фактическое число байтов, записанных в bytes
.
Исключения
Значение параметра charIndex
, charCount
или byteIndex
меньше нуля.
-или-
ПараметрыcharIndex
и charCount
не указывают допустимый диапазон в chars
.
-или-
Значение параметра byteIndex
не является допустимым индексом в bytes
.
Обнаружение ошибок включено, и s
содержит недопустимую последовательность символов.
-или-
Недостаточно емкости bytes
от byteIndex
до конца массива для размещения полученных байтов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Примеры
В следующем примере показано, как закодировать диапазон элементов из массива символов Юникода и сохранить закодированные байты в диапазоне элементов в массиве байтов.
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'};
UnicodeEncoding^ Unicode = gcnew UnicodeEncoding;
int byteCount = Unicode->GetByteCount( chars, 1, 2 );
bytes = gcnew array<Byte>(byteCount);
int bytesEncodedCount = Unicode->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 UnicodeEncodingExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
UnicodeEncoding Unicode = new UnicodeEncoding();
int byteCount = Unicode.GetByteCount(chars, 1, 2);
bytes = new Byte[byteCount];
int bytesEncodedCount = Unicode.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 UnicodeEncodingExample
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 uni As New UnicodeEncoding()
Dim byteCount As Integer = uni.GetByteCount(chars, 1, 2)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = uni.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 метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод вызывает исключение ArgumentException. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Преобразуемые данные, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что его необходимо разделить на более мелкие блоки, приложение должно использовать Decoder или , предоставленные Encoder методом GetDecoder или методом GetEncoder соответственно.
Важно!
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. За вставку заготовки в начало потока байтов (например, в начале ряда байтов для записи в файл) отвечает разработчик. Метод GetBytes не добавляет заготовку к началу последовательности закодированных байтов.
См. также раздел
Применяется к
GetBytes(String)
Кодирует набор символов из заданной строки в указанный массив байтов.
public:
override cli::array <System::Byte> ^ GetBytes(System::String ^ s);
public override byte[] GetBytes (string s);
override this.GetBytes : string -> byte[]
Public Overrides Function GetBytes (s As String) As Byte()
Параметры
- s
- String
Возвращаемое значение
Применяется к
GetBytes(Char*, Int32, Byte*, Int32)
- Исходный код:
- UnicodeEncoding.cs
- Исходный код:
- UnicodeEncoding.cs
- Исходный код:
- UnicodeEncoding.cs
Важно!
Этот API несовместим с CLS.
Кодирует набор символов, начало которого задается указателем символа, в последовательность байтов, которые сохраняются начиная с заданного указателя байта.
public:
override int GetBytes(char* chars, int charCount, System::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]
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)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<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
Параметры
- chars
- Char*
Указатель на первый кодируемый символ.
- charCount
- Int32
Число кодируемых символов.
- bytes
- Byte*
Указатель на положение, с которого начинается запись результирующей последовательности байтов.
- byteCount
- Int32
Максимальное число байтов для записи.
Возвращаемое значение
Фактическое число байтов, записанных в местоположение, которое задано параметром bytes
.
- Атрибуты
Исключения
chars
имеет значение null
(Nothing
).
-или-
bytes
имеет значение null
(Nothing
).
Значение параметра charCount
или byteCount
меньше нуля.
Обнаружение ошибок включено, и chars
содержит недопустимую последовательность символов.
-или-
byteCount
меньше результирующего числа байтов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Комментарии
Чтобы вычислить точный размер массива, который GetBytes требуется для хранения результирующего байта, вызовите GetByteCount метод . Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод . Метод GetByteCount обычно выделяет меньше памяти, в то время как GetMaxByteCount метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод вызывает исключение ArgumentException. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Данные для преобразования, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что его необходимо разделить на более мелкие блоки, приложение должно использовать Decoder объект или Encoder , предоставленный методом GetDecoder или GetEncoder , соответственно.
Важно!
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. За вставку в начале потока байтов (например, в начало ряда байтов для записи в файл) отвечает разработчик. Метод GetBytes не добавляет начало к началу последовательности закодированных байтов.