UTF8Encoding.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
| Nazwa | Opis |
|---|---|
| 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(String) |
Koduje znaki w określonym String obiekcie w sekwencji 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 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.
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, w którym należy rozpocząć pisanie wynikowej sekwencji bajtów.
Zwraca
Rzeczywista liczba bajtów zapisanych w pliku bytes.
Wyjątki
charIndex lub charCountbyteIndex jest mniejszy niż zero.
— lub —
charIndex i charCount nie oznaczają prawidłowego zakresu w elem chars.
— lub —
byteIndex nie jest prawidłowym indeksem w pliku bytes.
Wykrywanie błędów jest włączone i chars zawiera nieprawidłową sekwencję znaków.
— lub —
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 jest ustawiony na EncoderExceptionFallback.
Przykłady
W poniższym przykładzie użyto GetBytes metody , aby zakodować zakres znaków z ciągu i przechowywać zakodowane bajty w zakresie elementów w tablicy bajtów.
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Byte[] bytes;
String chars = "UTF8 Encoding Example";
UTF8Encoding utf8 = new UTF8Encoding();
int byteCount = utf8.GetByteCount(chars.ToCharArray(), 0, 13);
bytes = new Byte[byteCount];
int bytesEncodedCount = utf8.GetBytes(chars, 0, 13, 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 UTF8EncodingExample
Public Shared Sub Main()
Dim bytes() As Byte
Dim chars As String = "UTF8 Encoding Example"
Dim utf8 As New UTF8Encoding()
Dim byteCount As Integer = utf8.GetByteCount(chars.ToCharArray(), 0, 13)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8.GetBytes(chars, 0, 13, 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, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount . Metoda GetByteCount zazwyczaj przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.
W przypadku wykrywania błędów nieprawidłowa sekwencja powoduje, że ta metoda zgłasza ArgumentException wyjątek. Bez wykrywania błędów nieprawidłowe sekwencje są ignorowane i nie jest zgłaszany żaden wyjątek.
Dane do przekonwertowania, 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, należy użyć Decoder wartości lub dostarczonej GetDecoder przez metodę lub EncoderGetEncoder metodę, odpowiednio.
Aby upewnić się, że zakodowane bajty są prawidłowo dekodowane po zapisaniu ich jako pliku lub strumieniu, można prefiksować strumień zakodowanych bajtów z preambuły. Wstawienie preambuły na początku strumienia bajtów (na przykład na początku serii bajtów do zapisania w pliku) jest obowiązkiem dewelopera. Metoda GetBytes nie poprzedza preambuły na początku sekwencji zakodowanych bajtów.
Zobacz też
Dotyczy
GetBytes(String, Int32, Int32, Byte[], Int32)
Koduje zestaw znaków z określonej String tablicy bajtów.
public:
override int GetBytes(System::String ^ s, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (s As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer
Parametry
- 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, w którym należy rozpocząć pisanie wynikowej sekwencji bajtów.
Zwraca
Rzeczywista liczba bajtów zapisanych w pliku bytes.
Wyjątki
charIndex lub charCountbyteIndex jest mniejszy niż zero.
— lub —
charIndex i charCount nie oznaczają prawidłowego zakresu w elem s.
— lub —
byteIndex nie jest prawidłowym indeksem w pliku bytes.
Wykrywanie błędów jest włączone i s zawiera nieprawidłową sekwencję znaków.
— lub —
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 jest ustawiony na EncoderExceptionFallback.
Przykłady
W poniższym przykładzie użyto GetBytes metody , aby zakodować szereg elementów z tablicy znaków Unicode i zapisać zakodowane bajty w zakresie elementów w tablicy bajtów.
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
UTF8Encoding utf8 = new UTF8Encoding();
int byteCount = utf8.GetByteCount(chars, 1, 2);
bytes = new Byte[byteCount];
int bytesEncodedCount = utf8.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 UTF8EncodingExample
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 utf8 As New UTF8Encoding()
Dim byteCount As Integer = utf8.GetByteCount(chars, 1, 2)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8.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, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount . Metoda GetByteCount zazwyczaj przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.
W przypadku wykrywania błędów nieprawidłowa sekwencja powoduje, że ta metoda zgłasza ArgumentException wyjątek. Bez wykrywania błędów nieprawidłowe sekwencje są ignorowane i nie jest zgłaszany żaden wyjątek.
Dane do przekonwertowania, 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, należy użyć Decoder wartości lub dostarczonej GetDecoder przez metodę lub EncoderGetEncoder metodę, odpowiednio.
Aby upewnić się, że zakodowane bajty są prawidłowo dekodowane po zapisaniu ich jako pliku lub strumieniu, można prefiksować strumień zakodowanych bajtów z preambuły. Wstawienie preambuły na początku strumienia bajtów (na przykład na początku serii bajtów do zapisania w pliku) jest obowiązkiem dewelopera. Metoda GetBytes nie poprzedza preambuły na początku sekwencji zakodowanych bajtów.
Zobacz też
Dotyczy
GetBytes(String)
Koduje znaki w określonym String obiekcie w sekwencji bajtów.
public:
override cli::array <System::Byte> ^ GetBytes(System::String ^ s);
public override byte[] GetBytes(string s);
override this.GetBytes : string -> byte[]
Public Overrides Function GetBytes (s As String) As Byte()
Parametry
- s
- String
Ciąg znaków do zakodowania.
Zwraca
Tablica bajtów zawierająca zakodowane znaki w ciągu określonym przez parametr s.
Dotyczy
GetBytes(Char*, Int32, Byte*, Int32)
Ważne
Ten interfejs API nie jest zgodny ze specyfikacją CLS.
Koduje zestaw znaków rozpoczynający się od określonego wskaźnika znaku 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)]
[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)]
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)>]
[<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
[<System.CLSCompliant(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
charCount lub byteCount jest mniejsza niż zero.
Wykrywanie błędów jest włączone i chars zawiera nieprawidłową sekwencję znaków.
— lub —
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 jest ustawiony na EncoderExceptionFallback.
Uwagi
Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania wynikowych bajtów, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount . Metoda GetByteCount zazwyczaj przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.
W przypadku wykrywania błędów nieprawidłowa sekwencja powoduje, że ta metoda zgłasza ArgumentException wyjątek. Bez wykrywania błędów nieprawidłowe sekwencje są ignorowane i nie jest zgłaszany żaden wyjątek.
Dane do przekonwertowania, 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 metody lub Encoder zwróconej odpowiednio przez GetDecoder metodę lub GetEncoder metodę.
Aby upewnić się, że zakodowane bajty są prawidłowo dekodowane po zapisaniu ich jako pliku lub strumieniu, można prefiksować strumień zakodowanych bajtów z preambuły. Wstawienie preambuły na początku strumienia bajtów (na przykład na początku serii bajtów do zapisania w pliku) jest obowiązkiem dewelopera. Metoda GetBytes nie poprzedza preambuły na początku sekwencji zakodowanych bajtów.