ASCIIEncoding.GetBytes Метод

Определение

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

Перегрузки

Имя Описание
GetBytes(ReadOnlySpan<Char>, Span<Byte>)

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

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

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

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

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

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

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

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

Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.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
Span<Byte>

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

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

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

Комментарии

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

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

ASCIIEncoding не предоставляет обнаружение ошибок. Любой символ Юникода больше, чем U+007F закодирован как вопросительный знак ASCII ("?").

Предостережение

По соображениям безопасности следует использовать UTF8Encodingили UnicodeEncodingUTF32Encoding включить обнаружение ошибок.

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

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

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

Важно!

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

Альтернативный вариант, совместимый с CLS
System.Text.ASCIIEncoding.GetBytes(Char[], Int32, Int32, Byte[], Int32)

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

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.

–или–

bytes равно null.

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

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

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

-и-

EncoderFallback задан как EncoderExceptionFallback.

Комментарии

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

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

ASCIIEncoding не предоставляет обнаружение ошибок. Любой символ Юникода больше U+007F преобразуется в вопросительный знак ASCII ("?").

Предостережение

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

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

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

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

Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.cs
Исходный код:
ASCIIEncoding.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.

–или–

bytes равно null.

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

–или–

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

–или–

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

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

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

-и-

EncoderFallback задан как EncoderExceptionFallback.

Примеры

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

using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "ASCII Encoding Example";
        
        ASCIIEncoding ascii = new ASCIIEncoding();
        
        int byteCount = ascii.GetByteCount(chars.ToCharArray(), 6, 8);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = ascii.GetBytes(chars, 6, 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 ASCIIEncodingExample
   
    Public Shared Sub Main()
        Dim bytes() As Byte
        Dim chars As String = "ASCII Encoding Example"

        Dim ascii As New ASCIIEncoding()

        Dim byteCount As Integer = ascii.GetByteCount(chars.ToCharArray(), 6, 8)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = ascii.GetBytes(chars, 6, 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 метод обычно выполняется быстрее.

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

ASCIIEncoding не предоставляет обнаружение ошибок. Любой символ Юникода, превышающий U+007F, закодирован как вопросительный знак ASCII ("?").

Предостережение

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

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

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

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

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

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

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

Параметры

chars
String

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

charIndex
Int32

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

charCount
Int32

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

bytes
Byte[]

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

byteIndex
Int32

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

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

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

Исключения

chars или bytes есть null.

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

–или–

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

–или–

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

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

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

-и-

EncoderFallback задан как EncoderExceptionFallback.

Примеры

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

using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        ASCIIEncoding ascii = new ASCIIEncoding();
        
        int byteCount = ascii.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = ascii.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 ASCIIEncodingExample
    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 ascii As New ASCIIEncoding()

        Dim byteCount As Integer = ascii.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1){}
        Dim bytesEncodedCount As Integer = ascii.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 соответственно.

ASCIIEncoding не предоставляет обнаружение ошибок. Любой символ Юникода, превышающий U+007F, закодирован как вопросительный знак ASCII ("?").

Предостережение

По соображениям безопасности рекомендуется использовать UTF8Encodingили UnicodeEncodingUTF32Encoding включить обнаружение ошибок.

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

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