Encoder.GetBytes Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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í.
- 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
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
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]
'