ASCIIEncoding.GetBytes Metoda

Definicja

Koduje zestaw znaków w sekwencji bajtów.Encodes a set of characters into a sequence of bytes.

Przeciążenia

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

Koduje określony zakres znaków do określonego zakresu bajtów.Encodes the specified character span into the specified byte span.

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

Koduje zestaw znaków, zaczynając od określonego wskaźnika znakowego do sekwencji bajtów, które są przechowywane, zaczynając od określonego wskaźnika bajtu.Encodes a set of characters starting at the specified character pointer into a sequence of bytes that are stored starting at the specified byte pointer.

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

Koduje zestaw znaków z określonej tablicy znaków w określonej tablicy bajtów.Encodes a set of characters from the specified character array into the specified byte array.

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

Koduje zestaw znaków z określonego String w określonej tablicy bajtów.Encodes a set of characters from the specified String into the specified byte array.

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

Koduje określony zakres znaków do określonego zakresu bajtów.Encodes the specified character span into the specified byte span.

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.The character span to encode.

bytes
Span<Byte>

Zakres, który zawiera zestaw bajtów.The span to contain the resulting set of bytes.

Zwraca

Int32

Rzeczywista liczba bajtów do zapisania bytes .The actual number of bytes written into bytes.

Uwagi

Aby obliczyć dokładny rozmiar wymagany przez GetBytes program do przechowywania powstających bajtów, użyj GetByteCount .To calculate the exact size required by GetBytes to store the resulting bytes, use GetByteCount. Aby obliczyć maksymalny rozmiar, użyj GetMaxByteCount .To calculate the maximum size, use GetMaxByteCount. GetByteCountMetoda ogólnie zezwala na przydzielanie mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zazwyczaj wykonuje się szybciej.The GetByteCount method generally allows allocation of less memory, while the GetMaxByteCount method generally executes faster.

Dane do przekonwertowania, takie jak dane odczytane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych.Data to be converted, such as data read from a stream, can be available only in sequential blocks. W tym przypadku lub, jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, użyj Decoder lub Encoder odpowiednio do GetDecoder metody lub GetEncoder metody.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

ASCIIEncoding nie zapewnia wykrywania błędów.ASCIIEncoding does not provide error detection. Dowolny znak Unicode większy niż U+007F jest zakodowany jako znak zapytania ASCII ("?").Any Unicode character greater than U+007F is encoded as the ASCII question mark ("?").

Przestroga

Ze względów bezpieczeństwa należy używać UTF8Encoding , UnicodeEncoding lub UTF32Encoding i włączać wykrywanie błędów.For security reasons, you should use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

Dotyczy

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

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, zaczynając od określonego wskaźnika znakowego do sekwencji bajtów, które są przechowywane, zaczynając od określonego wskaźnika bajtu.Encodes a set of characters starting at the specified character pointer into a sequence of bytes that are stored starting at the specified byte pointer.

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);
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
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 do zakodowania.A pointer to the first character to encode.

charCount
Int32

Liczba znaków do zakodowania.The number of characters to encode.

bytes
Byte*

Wskaźnik do lokalizacji, w której ma zostać rozpoczęte pisanie sekwencji bajtów.A pointer to the location at which to start writing the resulting sequence of bytes.

byteCount
Int32

Maksymalna liczba bajtów do zapisania.The maximum number of bytes to write.

Zwraca

Int32

Rzeczywista liczba bajtów zapisywana w lokalizacji wskazywanej przez bytes .The actual number of bytes written at the location indicated by bytes.

Atrybuty

Wyjątki

chars to null.chars is null.

-lub--or- bytes to null.bytes is null.

charCount lub byteCount jest mniejsza od zera.charCount or byteCount is less than zero.

byteCount jest mniejsza niż liczba bajtów będących wynikiem.byteCount is less than the resulting number of bytes.

Wystąpiła rezerwa (Aby uzyskać więcej informacji, zobacz kodowanie znaków w programie .NET).A fallback occurred (for more information, see Character Encoding in .NET) lub-and- EncoderFallback jest ustawiony na EncoderExceptionFallback .EncoderFallback is set to EncoderExceptionFallback.

Uwagi

W celu obliczenia dokładnego rozmiaru tablicy wymaganego w GetBytes celu przechowywania powstających bajtów aplikacja będzie używać GetByteCount .To calculate the exact array size required by GetBytes to store the resulting bytes, the application uses GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać GetMaxByteCount .To calculate the maximum array size, the application should use GetMaxByteCount. GetByteCountMetoda ogólnie zezwala na przydzielanie mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zazwyczaj wykonuje się szybciej.The GetByteCount method generally allows allocation of less memory, while the GetMaxByteCount method generally executes faster.

Dane do przekonwertowania, takie jak dane odczytane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych.Data to be converted, such as data read from a stream, can be available only in sequential blocks. W tym przypadku lub, jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać lub odpowiednio do metody Decoder Encoder GetDecoder lub GetEncoder metody.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

ASCIIEncoding nie zapewnia wykrywania błędów.ASCIIEncoding does not provide error detection. Dowolny znak Unicode większy niż U + 007F jest tłumaczony na znak zapytania ASCII ("?").Any Unicode character greater than U+007F is translated to an ASCII question mark ("?").

Przestroga

Ze względów bezpieczeństwa zalecane jest użycie UTF8Encoding , UnicodeEncoding , lub UTF32Encoding i włączenie wykrywania błędów.For security reasons, your application is recommended to use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

Zobacz też

Dotyczy

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

Koduje zestaw znaków z określonej tablicy znaków w określonej tablicy bajtów.Encodes a set of characters from the specified character array into the specified byte array.

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.The character array containing the set of characters to encode.

charIndex
Int32

Indeks pierwszego znaku do zakodowania.The index of the first character to encode.

charCount
Int32

Liczba znaków do zakodowania.The number of characters to encode.

bytes
Byte[]

Tablica bajtów, która zawiera wyniki sekwencji bajtów.The byte array to contain the resulting sequence of bytes.

byteIndex
Int32

Indeks, od którego ma zostać rozpoczęte zapisywanie wyniku sekwencji bajtów.The index at which to start writing the resulting sequence of bytes.

Zwraca

Int32

Rzeczywista liczba bajtów do zapisania bytes .The actual number of bytes written into bytes.

Wyjątki

chars to null.chars is null.

-lub--or- bytes to null.bytes is null.

charIndex lub charCount byteIndex jest mniejsza od zera.charIndex or charCount or byteIndex is less than zero.

-lub--or- charIndex i charCount nie należy zauważyć prawidłowego zakresu w chars .charIndex and charCount do not denote a valid range in chars.

-lub--or- byteIndex nie jest prawidłowym indeksem w bytes .byteIndex is not a valid index in bytes.

bytes nie ma wystarczającej pojemności od byteIndex do końca tablicy, aby pomieścić wyniki.bytes does not have enough capacity from byteIndex to the end of the array to accommodate the resulting bytes.

Wystąpiła rezerwa (Aby uzyskać więcej informacji, zobacz kodowanie znaków w programie .NET).A fallback occurred (for more information, see Character Encoding in .NET) lub-and- EncoderFallback jest ustawiony na EncoderExceptionFallback .EncoderFallback is set to EncoderExceptionFallback.

Przykłady

Poniższy przykład ilustruje sposób użycia GetBytes metody do kodowania zakresu znaków z ciągu i przechowywania zakodowanych znaków w zakresie elementów w tablicy bajtów.The following example demonstrates how to use the GetBytes method to encode a range of characters from a string and store the encoded characters in a range of elements in a byte array.

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

W celu obliczenia dokładnego rozmiaru tablicy wymaganego w GetBytes celu przechowywania powstających bajtów aplikacja będzie używać GetByteCount .To calculate the exact array size required by GetBytes to store the resulting bytes, the application uses GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać GetMaxByteCount .To calculate the maximum array size, the application should use GetMaxByteCount. GetByteCountMetoda ogólnie zezwala na przydzielanie mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zazwyczaj wykonuje się szybciej.The GetByteCount method generally allows allocation of less memory, while the GetMaxByteCount method generally executes faster.

Dane do przekonwertowania, takie jak dane odczytane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych.Data to be converted, such as data read from a stream, can be available only in sequential blocks. W tym przypadku lub, jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać lub odpowiednio do metody Decoder Encoder GetDecoder lub GetEncoder metody.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

ASCIIEncoding nie zapewnia wykrywania błędów.ASCIIEncoding does not provide error detection. Dowolny znak Unicode większy niż U + 007F jest zakodowany jako znak zapytania ASCII ("?").Any Unicode character greater than U+007F is encoded as the ASCII question mark ("?").

Przestroga

Ze względów bezpieczeństwa zalecane jest użycie UTF8Encoding , UnicodeEncoding , lub UTF32Encoding i włączenie wykrywania błędów.For security reasons, your application is recommended to use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

Zobacz też

Dotyczy

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

Koduje zestaw znaków z określonego String w określonej tablicy bajtów.Encodes a set of characters from the specified String into the specified byte array.

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

StringZawiera zestaw znaków do kodowania.The String containing the set of characters to encode.

charIndex
Int32

Indeks pierwszego znaku do zakodowania.The index of the first character to encode.

charCount
Int32

Liczba znaków do zakodowania.The number of characters to encode.

bytes
Byte[]

Tablica bajtów, która zawiera wyniki sekwencji bajtów.The byte array to contain the resulting sequence of bytes.

byteIndex
Int32

Indeks, od którego ma zostać rozpoczęte zapisywanie wyniku sekwencji bajtów.The index at which to start writing the resulting sequence of bytes.

Zwraca

Int32

Rzeczywista liczba bajtów do zapisania bytes .The actual number of bytes written into bytes.

Wyjątki

s to null.s is null.

-lub--or- bytes to null.bytes is null.

charIndex lub charCount byteIndex jest mniejsza od zera.charIndex or charCount or byteIndex is less than zero.

-lub--or- charIndex i charCount nie należy zauważyć prawidłowego zakresu w chars .charIndex and charCount do not denote a valid range in chars.

-lub--or- byteIndex nie jest prawidłowym indeksem w bytes .byteIndex is not a valid index in bytes.

bytes nie ma wystarczającej pojemności od byteIndex do końca tablicy, aby pomieścić wyniki.bytes does not have enough capacity from byteIndex to the end of the array to accommodate the resulting bytes.

Wystąpiła rezerwa (Aby uzyskać więcej informacji, zobacz kodowanie znaków w programie .NET).A fallback occurred (for more information, see Character Encoding in .NET) lub-and- EncoderFallback jest ustawiony na EncoderExceptionFallback .EncoderFallback is set to EncoderExceptionFallback.

Przykłady

Poniższy przykład ilustruje sposób użycia GetBytes metody do kodowania zakresu elementów z tablicy znaków Unicode i przechowywania zakodowanych bajtów w zakresie elementów w tablicy bajtów.The following example demonstrates how to use the GetBytes method to encode a range of elements from a Unicode character array and store the encoded bytes in a range of elements in a byte array.

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

W celu obliczenia dokładnego rozmiaru tablicy wymaganego w GetBytes celu przechowywania powstających bajtów aplikacja będzie używać GetByteCount .To calculate the exact array size required by GetBytes to store the resulting bytes, the application uses GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna używać GetMaxByteCount .To calculate the maximum array size, the application should use GetMaxByteCount. GetByteCountMetoda ogólnie zezwala na przydzielanie mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zazwyczaj wykonuje się szybciej.The GetByteCount method generally allows allocation of less memory, while the GetMaxByteCount method generally executes faster.

Dane do przekonwertowania, takie jak dane odczytane ze strumienia, mogą być dostępne tylko w blokach sekwencyjnych.Data to be converted, such as data read from a stream, can be available only in sequential blocks. W tym przypadku lub, jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, aplikacja powinna używać lub odpowiednio do metody Decoder Encoder GetDecoder lub GetEncoder metody.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.

ASCIIEncoding nie zapewnia wykrywania błędów.ASCIIEncoding does not provide error detection. Dowolny znak Unicode większy niż U + 007F jest zakodowany jako znak zapytania ASCII ("?").Any Unicode character greater than U+007F is encoded as the ASCII question mark ("?").

Przestroga

Ze względów bezpieczeństwa zalecane jest użycie UTF8Encoding , UnicodeEncoding , lub UTF32Encoding i włączenie wykrywania błędów.For security reasons, your application is recommended to use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

Zobacz też

Dotyczy