UnicodeEncoding.GetBytes Metoda

Definicja

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 zestaw znaków z określonego ciągu do określonej tablicy 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

chars is null (Nothing).

— lub —

bytes is null (Nothing).

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 pokazano, jak za pomocą GetBytes metody kodować zakres znaków z String obiektu i przechowywać zakodowane bajty w zakresie elementów w tablicy bajtów.

using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "Unicode Encoding Example";
        
        UnicodeEncoding Unicode = new UnicodeEncoding();
        
        int byteCount = Unicode.GetByteCount(chars.ToCharArray(), 8, 8);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = Unicode.GetBytes(chars, 8, 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 UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        Dim chars As String = "Unicode Encoding Example"
        
        Dim uni As New UnicodeEncoding()
        
        Dim byteCount As Integer = uni.GetByteCount(chars.ToCharArray(), 8, 8)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = uni.GetBytes(chars, 8, 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, 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 błąd ArgumentException. 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, aplikacja powinna użyć Decoder odpowiednio metody lub Encoder metody GetDecoder lub GetEncoder metody.

Ważna

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

s
String

Ciąg 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, w którym należy rozpocząć pisanie wynikowej sekwencji bajtów.

Zwraca

Rzeczywista liczba bajtów zapisanych w pliku bytes.

Wyjątki

Parametr s ma wartość null.

— lub —

bytes is null (Nothing).

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 pokazano, jak kodować szereg elementów z tablicy znaków Unicode i przechowywać zakodowane bajty w zakresie elementów w tablicy bajtów.

using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UnicodeEncoding Unicode = new UnicodeEncoding();
        
        int byteCount = Unicode.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = Unicode.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 UnicodeEncodingExample
    
    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 uni As New UnicodeEncoding()
        
        Dim byteCount As Integer = uni.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = uni.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 błąd ArgumentException. 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, aplikacja powinna użyć Decoder odpowiednio metody lub Encoder metody GetDecoder lub GetEncoder metody.

Ważna

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 zestaw znaków z określonego ciągu do określonej tablicy 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

Zwraca

Byte[]

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.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(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)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(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

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 bytes przez parametr .

Atrybuty

Wyjątki

chars is null (Nothing).

— lub —

bytes is null (Nothing).

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, który GetBytes wymaga 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 błąd ArgumentException. 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 zostać podzielona na mniejsze bloki, aplikacja powinna użyć Decoder odpowiednio obiektu lub Encoder dostarczonego GetDecoder przez metodę lub GetEncoder .

Ważna

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