ASCIIEncoding.GetBytes Metoda

Definicja

Koduje zestaw znaków w sekwencji bajtów.

Przeciążenia

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

Koduje określony zakres znaków do określonego zakresu bajtów.

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

Koduje zestaw znaków rozpoczynający się od określonego wskaźnika znaku do sekwencji bajtów przechowywanych w określonym wskaźniku bajtów.

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

Koduje zestaw znaków z określonej tablicy znaków do określonej tablicy bajtów.

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

Koduje zestaw znaków z określonej String tablicy bajtów.

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

Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs

Koduje określony zakres znaków do określonego zakresu bajtów.

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

Parametry

chars
ReadOnlySpan<Char>

Zakres znaków do kodowania.

bytes
Span<Byte>

Zakres zawierający wynikowy zestaw bajtów.

Zwraca

Rzeczywista liczba bajtów zapisanych w pliku bytes.

Uwagi

Aby obliczyć dokładny rozmiar wymagany przez GetBytes program do przechowywania wynikowych bajtów, użyj polecenia GetByteCount. Aby obliczyć maksymalny rozmiar, użyj polecenia GetMaxByteCount. Metoda GetByteCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.

Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W tym przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, użyj Decoder metody lub Encoder dostarczonej GetDecoder odpowiednio przez metodę lub GetEncoder metodę.

ASCIIEncoding nie zapewnia wykrywania błędów. Dowolny znak Unicode większy niż U+007F jest zakodowany jako znak zapytania ASCII ("?").

Przestroga

Ze względów bezpieczeństwa należy użyć funkcji UTF8Encoding, UnicodeEncodinglub UTF32Encoding i włączyć wykrywanie błędów.

Dotyczy

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

Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Alternatywa zgodna ze specyfikacją CLS
System.Text.ASCIIEncoding.GetBytes(Char[], Int32, Int32, Byte[], Int32)

Koduje zestaw znaków rozpoczynający się od określonego wskaźnika znaku do sekwencji bajtów przechowywanych w określonym wskaźniku bajtów.

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

Parametry

chars
Char*

Wskaźnik do pierwszego znaku w celu zakodowania.

charCount
Int32

Liczba znaków do zakodowania.

bytes
Byte*

Wskaźnik do lokalizacji, w której należy rozpocząć pisanie wynikowej sekwencji bajtów.

byteCount
Int32

Maksymalna liczba bajtów do zapisu.

Zwraca

Rzeczywista liczba bajtów zapisanych w lokalizacji wskazanej przez bytes.

Atrybuty

Wyjątki

chars to null.

-lub-

bytes to null.

charCount wartość lub byteCount jest mniejsza niż zero.

byteCount jest mniejsza niż wynikowa liczba bajtów.

Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-I-

EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .

Uwagi

Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania wynikowych bajtów, aplikacja używa elementu GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać polecenia GetMaxByteCount. Metoda GetByteCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.

Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać Decoder wartości lub dostarczonej GetDecoder przez metodę lub EncoderGetEncoder metodę.

ASCIIEncoding nie zapewnia wykrywania błędów. Każdy znak Unicode większy niż U+007F jest tłumaczony na znak zapytania ASCII ("?").

Przestroga

Ze względów bezpieczeństwa zaleca się korzystanie z UTF8Encodingaplikacji , UnicodeEncodinglub UTF32Encoding i włączanie wykrywania błędów.

Zobacz też

Dotyczy

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

Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs

Koduje zestaw znaków z określonej tablicy znaków do określonej tablicy bajtów.

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

Parametry

chars
Char[]

Tablica znaków zawierająca zestaw znaków do kodowania.

charIndex
Int32

Indeks pierwszego znaku do zakodowania.

charCount
Int32

Liczba znaków do zakodowania.

bytes
Byte[]

Tablica bajtów zawierająca wynikową sekwencję bajtów.

byteIndex
Int32

Indeks, na którym należy rozpocząć pisanie wynikowej sekwencji bajtów.

Zwraca

Rzeczywista liczba bajtów zapisanych w pliku bytes.

Wyjątki

chars to null.

-lub-

bytes to null.

charIndex lub charCountbyteIndex jest mniejsza niż zero.

-lub-

charIndex i charCount nie oznaczają prawidłowego zakresu w elemecie chars.

-lub-

byteIndex nie jest prawidłowym indeksem w pliku bytes.

bytes nie ma wystarczającej pojemności od byteIndex do końca tablicy, aby pomieścić wynikowe bajty.

Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-I-

EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .

Przykłady

W poniższym przykładzie pokazano, jak za pomocą GetBytes metody kodować zakres znaków z ciągu i przechowywać zakodowane znaki w zakresie elementów w tablicy bajtów.

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

Uwagi

Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania wynikowych bajtów, aplikacja używa elementu GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać polecenia GetMaxByteCount. Metoda GetByteCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.

Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać Decoder wartości lub dostarczonej GetDecoder przez metodę lub EncoderGetEncoder metodę.

ASCIIEncoding nie zapewnia wykrywania błędów. Każdy znak Unicode większy niż U+007F jest zakodowany jako znak zapytania ASCII ("?").

Przestroga

Ze względów bezpieczeństwa zaleca się korzystanie z UTF8Encodingaplikacji , UnicodeEncodinglub UTF32Encoding i włączanie wykrywania błędów.

Zobacz też

Dotyczy

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

Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs
Source:
ASCIIEncoding.cs

Koduje zestaw znaków z określonej String tablicy bajtów.

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

Parametry

chars
String

Element String zawierający zestaw znaków do zakodowania.

charIndex
Int32

Indeks pierwszego znaku do zakodowania.

charCount
Int32

Liczba znaków do zakodowania.

bytes
Byte[]

Tablica bajtów zawierająca wynikową sekwencję bajtów.

byteIndex
Int32

Indeks, na którym należy rozpocząć pisanie wynikowej sekwencji bajtów.

Zwraca

Rzeczywista liczba bajtów zapisanych w pliku bytes.

Wyjątki

s to null.

-lub-

bytes to null.

charIndex lub charCountbyteIndex jest mniejsza niż zero.

-lub-

charIndex i charCount nie oznaczają prawidłowego zakresu w elemecie chars.

-lub-

byteIndex nie jest prawidłowym indeksem w pliku bytes.

bytes nie ma wystarczającej pojemności od byteIndex do końca tablicy, aby pomieścić wynikowe bajty.

Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-I-

EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .

Przykłady

W poniższym przykładzie pokazano, jak za pomocą GetBytes metody kodować zakres elementów z tablicy znaków Unicode i przechowywać zakodowane bajty w zakresie elementów w tablicy bajtów.

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

Uwagi

Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania wynikowych bajtów, aplikacja używa elementu GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać polecenia GetMaxByteCount. Metoda GetByteCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.

Dane, które mają być konwertowane, takie jak dane odczytywane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych. W takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać Decoder wartości lub dostarczonej GetDecoder przez metodę lub EncoderGetEncoder metodę.

ASCIIEncoding nie zapewnia wykrywania błędów. Każdy znak Unicode większy niż U+007F jest zakodowany jako znak zapytania ASCII ("?").

Przestroga

Ze względów bezpieczeństwa zaleca się korzystanie z UTF8Encodingaplikacji , UnicodeEncodinglub UTF32Encoding i włączanie wykrywania błędów.

Zobacz też

Dotyczy