ASCIIEncoding.GetBytes Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 znaków do sekwencji bajtów przechowywanych od określonego wskaźnika 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>)
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- 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.
Zwraca
Rzeczywista liczba bajtów zapisanych w bytes
pliku .
Uwagi
Aby obliczyć dokładny rozmiar wymagany przez GetBytes magazyn 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 takim przypadku lub jeśli ilość danych jest tak duża, że musi być podzielona na mniejsze bloki, użyj Decoder wartości 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ć UTF8Encodingpolecenia , UnicodeEncodinglub UTF32Encoding i włączyć wykrywanie błędów.
Dotyczy
GetBytes(Char*, Int32, Byte*, Int32)
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- 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 znaków do sekwencji bajtów przechowywanych od określonego wskaźnika 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 kodowania.
- bytes
- Byte*
Wskaźnik do lokalizacji, w której chcesz 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
charCount
wartość lub byteCount
jest mniejsza niż zero.
byteCount
jest mniejsza niż wynikowa liczba bajtów.
Wystąpił rezerwowy (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
EncoderFallback jest ustawiona na EncoderExceptionFallbackwartość .
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes do przechowywania wynikowych bajtów, aplikacja używa polecenia GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna użyć 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 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 tłumaczony na znak zapytania ASCII ("?").
Przestroga
Ze względów bezpieczeństwa aplikacja jest zalecana do używania UTF8Encodingfunkcji , UnicodeEncodinglub UTF32Encoding i włączania wykrywania błędów.
Zobacz też
Dotyczy
GetBytes(Char[], Int32, Int32, Byte[], Int32)
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- 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 kodowania.
- charCount
- Int32
Liczba znaków do kodowania.
- bytes
- Byte[]
Tablica bajtów zawierająca wynikową sekwencję bajtów.
- byteIndex
- Int32
Indeks, na którym rozpocznie się pisanie wynikowej sekwencji bajtów.
Zwraca
Rzeczywista liczba bajtów zapisanych w bytes
pliku .
Wyjątki
charIndex
lub charCount
byteIndex
jest mniejszy niż zero.
-lub-
charIndex
i charCount
nie oznaczają prawidłowego zakresu w chars
elemecie .
-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ł rezerwowy (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
EncoderFallback jest ustawiona na EncoderExceptionFallbackwartość .
Przykłady
W poniższym przykładzie pokazano, jak za GetBytes pomocą metody kodować szereg 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 do przechowywania wynikowych bajtów, aplikacja używa polecenia GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna użyć 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 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 aplikacja jest zalecana do używania UTF8Encodingfunkcji , UnicodeEncodinglub UTF32Encoding i włączania wykrywania błędów.
Zobacz też
Dotyczy
GetBytes(String, Int32, Int32, Byte[], Int32)
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- ASCIIEncoding.cs
- Źródło:
- 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
- charIndex
- Int32
Indeks pierwszego znaku do kodowania.
- charCount
- Int32
Liczba znaków do kodowania.
- bytes
- Byte[]
Tablica bajtów zawierająca wynikową sekwencję bajtów.
- byteIndex
- Int32
Indeks, na którym rozpocznie się pisanie wynikowej sekwencji bajtów.
Zwraca
Rzeczywista liczba bajtów zapisanych w pliku bytes
.
Wyjątki
charIndex
lub charCount
byteIndex
jest mniejszy niż zero.
-lub-
charIndex
i charCount
nie oznaczają prawidłowego zakresu w chars
elemecie .
-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ł rezerwowy (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)
-I-
EncoderFallback jest ustawiona na EncoderExceptionFallbackwartość .
Przykłady
W poniższym przykładzie pokazano, jak za GetBytes pomocą metody kodować szereg elementów z tablicy znaków Unicode i przechowywać zakodowane bajty w wielu elementach 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 do przechowywania wynikowych bajtów, aplikacja używa polecenia GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna użyć 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żyć Decoder metody lub Encoder dostarczonej GetDecoder odpowiednio przez metodę lub GetEncoder 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.