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


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

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

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 или , предоставленные Encoder методом GetDecoder или методом GetEncoder соответственно.

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

Внимание!

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

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

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

Исходный код:
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 ("?").

Внимание!

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

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

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

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

Исходный код:
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, 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;
   String^ chars = "ASCII Encoding Example";
   ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
   int byteCount = ascii->GetByteCount( chars->ToCharArray(), 6, 8 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = ascii->GetBytes( chars, 6, 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 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 ("?").

Внимание!

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

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

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

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

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

Объект String, содержащий кодируемый набор символов.

charIndex
Int32

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

charCount
Int32

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

bytes
Byte[]

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

byteIndex
Int32

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

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

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

Исключения

s имеет значение null.

-или-

bytes имеет значение null.

Значение параметра 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'};
   ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
   int byteCount = ascii->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = ascii->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 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, UnicodeEncodingили UTF32Encoding и включить обнаружение ошибок.

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

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