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 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
Кодируемая строка символов.
Возвращаемое значение
Массив байтов, содержащий закодированные символы из строки, заданной параметром s.
Применяется к
GetBytes(ReadOnlySpan<Char>, Span<Byte>)
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
Кодирует заданный диапазон символов в заданный диапазон байтов.
public:
override int GetBytes(ReadOnlySpan<char> chars, Span<System::Byte> bytes);
public override int GetBytes (ReadOnlySpan<char> chars, Span<byte> bytes);
override this.GetBytes : ReadOnlySpan<char> * Span<byte> -> int
Public Overrides Function GetBytes (chars As ReadOnlySpan(Of Char), bytes As Span(Of Byte)) As Integer
Параметры
- chars
- ReadOnlySpan<Char>
Кодируемый диапазон символов.
Возвращаемое значение
Фактическое число байтов, записанных в bytes
.
Комментарии
Чтобы вычислить точный размер, необходимый GetBytes для хранения результирующего байта, вызовите GetByteCount метод . Чтобы вычислить максимальный размер, вызовите GetMaxByteCount метод . Метод GetByteCount обычно выделяет меньше памяти, в то время как GetMaxByteCount метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод создает ArgumentException исключение. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Данные для преобразования, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что их необходимо разделить на более мелкие блоки, используйте Decoder или Encoder , возвращаемые методом GetDecoder или методом GetEncoder соответственно.
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. За вставку в начале потока байтов (например, в начало ряда байтов для записи в файл) отвечает разработчик. Метод GetBytes не добавляет начало к началу последовательности закодированных байтов.
Применяется к
GetBytes(Char*, Int32, Byte*, Int32)
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.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
.
- Атрибуты
Исключения
Значение параметра charCount
или byteCount
меньше нуля.
Обнаружение ошибок включено, и chars
содержит недопустимую последовательность символов.
-или-
byteCount
меньше результирующего числа байтов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Комментарии
Чтобы вычислить точный размер массива, необходимый GetBytes для хранения результирующего байта, вызовите GetByteCount метод . Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод . Метод GetByteCount обычно выделяет меньше памяти, в то время как GetMaxByteCount метод обычно выполняется быстрее.
При обнаружении ошибок недопустимая последовательность приводит к тому, что этот метод создает ArgumentException исключение. Без обнаружения ошибок недопустимые последовательности игнорируются, и исключение не создается.
Данные для преобразования, например данные, считываемые из потока, могут быть доступны только в последовательных блоках. В этом случае или если объем данных настолько велик, что их необходимо разделить на более мелкие блоки, используйте Decoder или Encoder , возвращаемые методом GetDecoder или методом GetEncoder соответственно.
Чтобы обеспечить правильное декодирование закодированных байтов при их сохранении в виде файла или потока, можно префиксировать поток закодированных байтов с помощью префикса. За вставку в начале потока байтов (например, в начало ряда байтов для записи в файл) отвечает разработчик. Метод GetBytes не добавляет начало к началу последовательности закодированных байтов.
См. также раздел
Применяется к
GetBytes(Char[], Int32, Int32, Byte[], Int32)
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.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
.
Исключения
Значение параметра charIndex
, charCount
или byteIndex
меньше нуля.
-или-
ПараметрыcharIndex
и charCount
не указывают допустимый диапазон в chars
.
-или-
Значение параметра byteIndex
не является допустимым индексом в bytes
.
Обнаружение ошибок включено, и chars
содержит недопустимую последовательность символов.
-или-
Недостаточно емкости bytes
от byteIndex
до конца массива для размещения полученных байтов.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Примеры
В следующем примере метод используется GetBytes для кодирования диапазона символов из строки и сохраняет закодированные байты в диапазоне элементов в массиве байтов.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Byte>^bytes;
String^ chars = "UTF8 Encoding Example";
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
int byteCount = utf8->GetByteCount( chars->ToCharArray(), 0, 13 );
bytes = gcnew array<Byte>(byteCount);
int bytesEncodedCount = utf8->GetBytes( chars, 0, 13, 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 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();
}
}
Imports System.Text
Class UTF8EncodingExample
Public Shared Sub Main()
Dim bytes() As Byte
Dim chars As String = "UTF8 Encoding Example"
Dim utf8 As New UTF8Encoding()
Dim byteCount As Integer = utf8.GetByteCount(chars.ToCharArray(), 0, 13)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8.GetBytes(chars, 0, 13, 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)
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.cs
- Исходный код:
- UTF8Encoding.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
Параметры
- charIndex
- Int32
Индекс первого кодируемого символа.
- charCount
- Int32
Число кодируемых символов.
- bytes
- Byte[]
Массив байтов, в который будет помещена результирующая последовательность байтов.
- byteIndex
- Int32
Индекс, с которого начинается запись результирующей последовательности байтов.
Возвращаемое значение
Фактическое число байтов, записанных в bytes
.
Исключения
Значение параметра charIndex
, charCount
или byteIndex
меньше нуля.
-или-
ПараметрыcharIndex
и charCount
не указывают допустимый диапазон в chars
.
-или-
Значение параметра byteIndex
не является допустимым индексом в bytes
.
Обнаружение ошибок включено, и s
содержит недопустимую последовательность символов.
-или-
Недостаточно емкости 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'};
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
int byteCount = utf8->GetByteCount( chars, 1, 2 );
bytes = gcnew array<Byte>(byteCount);
int bytesEncodedCount = utf8->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 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();
}
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class UTF8EncodingExample
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 utf8 As New UTF8Encoding()
Dim byteCount As Integer = utf8.GetByteCount(chars, 1, 2)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8.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 не добавляет заготовку к началу последовательности закодированных байтов.