Encoder.GetBytes Metoda

Definice

Při přepsání v odvozené třídě zakóduje sadu znaků do posloupnosti bajtů.

Přetížení

Name Description
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)

Při přepsání v odvozené třídě zakóduje sadu znaků ve vstupních znacích rozsah a všechny znaky v interní vyrovnávací paměti do posloupnosti bajtů, které jsou uloženy ve vstupním bajtovém rozsahu. Parametr určuje, jestli se má po převodu vymazat vnitřní stav kodéru.

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

Při přepsání v odvozené třídě kóduje sadu znaků začínající zadaným znakovým ukazatelem a všechny znaky v interní vyrovnávací paměti do posloupnosti bajtů, které jsou uloženy počínaje zadaným bajtovým ukazatelem. Parametr určuje, jestli se má po převodu vymazat vnitřní stav kodéru.

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

Při přepsání v odvozené třídě zakóduje sadu znaků ze zadaného pole znaků a všechny znaky v interní vyrovnávací paměti do zadané bajtové pole. Parametr určuje, jestli se má po převodu vymazat vnitřní stav kodéru.

Poznámky

Mějte na Encoder paměti, že objekt ukládá stav mezi voláními GetBytes. Po dokončení aplikace s datovým proudem by měl parametr nastavit flush do true posledního volání, aby GetBytes se zajistilo, že informace o stavu jsou vyprázdněny a že kódované bajty jsou správně ukončeny. Při tomto nastavení kodér ignoruje neplatné bajty na konci datového bloku, jako jsou chybějící náhradní nebo neúplné kombinační sekvence, a vymaže vnitřní vyrovnávací paměť.

K výpočtu přesné velikosti vyrovnávací paměti, která GetBytes vyžaduje uložení výsledných znaků, by aplikace měla použít GetByteCount.

Pokud GetBytes je volána s nastavenou flushfalsena , kodér ukládá koncové bajty na konci datového bloku v interní vyrovnávací paměti a používá je v další operaci kódování. Aplikace by měla volat GetByteCount blok dat bezprostředně před voláním GetBytes na stejný blok, aby všechny koncové znaky z předchozího bloku byly zahrnuty do výpočtu.

Pokud má vaše aplikace převést mnoho segmentů vstupního datového proudu, zvažte použití Convert metody. GetBytes vyvolá výjimku, pokud výstupní vyrovnávací paměť není dostatečně velká, ale Convert vyplní co nejvíce místa a vrátí znaky přečtené a bajty zapsané. Další komentáře najdete také v Encoding.GetBytes tématu.

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

Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs

Při přepsání v odvozené třídě zakóduje sadu znaků ve vstupních znacích rozsah a všechny znaky v interní vyrovnávací paměti do posloupnosti bajtů, které jsou uloženy ve vstupním bajtovém rozsahu. Parametr určuje, jestli se má po převodu vymazat vnitřní stav kodéru.

public:
 virtual int GetBytes(ReadOnlySpan<char> chars, Span<System::Byte> bytes, bool flush);
public virtual int GetBytes(ReadOnlySpan<char> chars, Span<byte> bytes, bool flush);
abstract member GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
override this.GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
Public Overridable Function GetBytes (chars As ReadOnlySpan(Of Char), bytes As Span(Of Byte), flush As Boolean) As Integer

Parametry

chars
ReadOnlySpan<Char>

Rozsah znaků pro kódování.

bytes
Span<Byte>

Bajtové rozpětí pro zápis výsledné sekvence bajtů do.

flush
Boolean

truevymazat vnitřní stav kodéru po převodu; v opačném případě . false

Návraty

Skutečný počet bajtů zapsaných v umístění určeném parametrem bytes .

Platí pro

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

Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs

Důležité

Toto rozhraní API neodpovídá specifikaci CLS.

Při přepsání v odvozené třídě kóduje sadu znaků začínající zadaným znakovým ukazatelem a všechny znaky v interní vyrovnávací paměti do posloupnosti bajtů, které jsou uloženy počínaje zadaným bajtovým ukazatelem. Parametr určuje, jestli se má po převodu vymazat vnitřní stav kodéru.

public:
 virtual int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[<System.CLSCompliant(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int

Parametry

chars
Char*

Ukazatel na první znak, který se má kódovat.

charCount
Int32

Počet znaků, které se mají zakódovat.

bytes
Byte*

Ukazatel na umístění, ve kterém chcete začít psát výslednou sekvenci bajtů.

byteCount
Int32

Maximální počet bajtů k zápisu.

flush
Boolean

truevymazat vnitřní stav kodéru po převodu; v opačném případě . false

Návraty

Skutečný počet bajtů zapsaných v umístění určeném parametrem bytes .

Atributy

Výjimky

chars je null (Nothing).

nebo

bytes je null (Nothing).

charCount nebo byteCount je menší než nula.

byteCount je menší než výsledný počet bajtů.

Došlo k záložnímu použití (další informace najdete v tématu Kódování znaků v .NET).

a

Fallback je nastaveno na EncoderExceptionFallback.

Platí pro

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

Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs
Zdroj:
Encoder.cs

Při přepsání v odvozené třídě zakóduje sadu znaků ze zadaného pole znaků a všechny znaky v interní vyrovnávací paměti do zadané bajtové pole. Parametr určuje, jestli se má po převodu vymazat vnitřní stav kodéru.

public:
 abstract int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex, bool flush);
public abstract int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush);
abstract member GetBytes : char[] * int * int * byte[] * int * bool -> int
Public MustOverride Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer, flush As Boolean) As Integer

Parametry

chars
Char[]

Pole znaků obsahující sadu znaků, které se mají kódovat.

charIndex
Int32

Index prvního znaku, který se má kódovat.

charCount
Int32

Počet znaků, které se mají zakódovat.

bytes
Byte[]

Bajtové pole, které bude obsahovat výslednou sekvenci bajtů.

byteIndex
Int32

Index, na kterém chcete začít psát výslednou sekvenci bajtů.

flush
Boolean

truevymazat vnitřní stav kodéru po převodu; v opačném případě . false

Návraty

Skutečný počet bajtů zapsaných do bytes.

Výjimky

chars je null (Nothing).

nebo

bytes je null (Nothing).

charIndex nebo charCountbyteIndex je menší než nula.

nebo

charIndex a charCount neoznamujte platný rozsah v chars.

nebo

byteIndex není platný index v bytessouboru .

bytes nemá dostatečnou kapacitu od byteIndex konce pole pro přizpůsobení výsledných bajtů.

Došlo k záložnímu použití (další informace najdete v tématu Kódování znaků v .NET).

a

Fallback je nastaveno na EncoderExceptionFallback.

Příklady

Následující příklad ukazuje, jak kódovat rozsah prvků z pole znaků a uložit kódované bajty v oblasti prvků v bajtovém poli. Metoda GetByteCount se používá k určení velikosti pole požadovaného GetBytes.

using System;
using System.Text;

class EncoderExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        Encoder uniEncoder = Encoding.Unicode.GetEncoder();
        
        int byteCount = uniEncoder.GetByteCount(chars, 0, chars.Length, true);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, true);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}

/* This code example produces the following output.

8 bytes used to encode characters.
Encoded bytes: [35][0][37][0][160][3][163][3]

*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class EncoderExample
    
    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 uniEncoder As Encoder = Encoding.Unicode.GetEncoder()
        
        Dim byteCount As Integer = _
            uniEncoder.GetByteCount(chars, 0, chars.Length, True)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = _
            uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, True)
        
        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

'This code example produces the following output.
'8 bytes used to encode characters.
'Encoded bytes: [35][0][37][0][160][3][163][3]
'

Platí pro