Decoder.GetChars Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze wordt overschreven in een afgeleide klasse, wordt een reeks bytes gedecodeert in een reeks tekens.
Overloads
| Name | Description |
|---|---|
| GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u een reeks spanbytes en bytes in de interne buffer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer. Een parameter geeft aan of de interne status van de decoder na de conversie moet worden gewist. |
| GetChars(Byte*, Int32, Char*, Int32, Boolean) |
Wanneer deze worden overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes die beginnen bij de opgegeven byteaanwijzer en bytes in de interne buffer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer. Een parameter geeft aan of de interne status van de decoder na de conversie moet worden gewist. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
Wanneer deze worden overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes van de opgegeven bytematrix en eventuele bytes in de interne buffer in de opgegeven tekenmatrix. |
| GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
Wanneer deze worden overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes van de opgegeven bytematrix en eventuele bytes in de interne buffer in de opgegeven tekenmatrix. Een parameter geeft aan of de interne status van de decoder na de conversie moet worden gewist. |
GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)
Wanneer deze wordt overschreven in een afgeleide klasse, ontsleutelt u een reeks spanbytes en bytes in de interne buffer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer. Een parameter geeft aan of de interne status van de decoder na de conversie moet worden gewist.
public:
virtual int GetChars(ReadOnlySpan<System::Byte> bytes, Span<char> chars, bool flush);
public virtual int GetChars(ReadOnlySpan<byte> bytes, Span<char> chars, bool flush);
abstract member GetChars : ReadOnlySpan<byte> * Span<char> * bool -> int
override this.GetChars : ReadOnlySpan<byte> * Span<char> * bool -> int
Public Overridable Function GetChars (bytes As ReadOnlySpan(Of Byte), chars As Span(Of Char), flush As Boolean) As Integer
Parameters
- bytes
- ReadOnlySpan<Byte>
Een bytespanne om te decoderen.
- flush
- Boolean
true om de interne toestand van de decoder na de conversie te wissen; anders, false.
Retouren
Het werkelijke aantal tekens dat is geschreven op het bereik dat wordt aangegeven door de chars parameter.
Opmerkingen
Houd er rekening mee dat het object de Decoder status opslaat tussen aanroepen naar GetChars. Wanneer de toepassing wordt uitgevoerd met een gegevensstroom, moet deze de flush parameter instellen om true ervoor te zorgen dat de statusinformatie wordt leeggemaakt. Met deze instelling negeert de decoder ongeldige bytes aan het einde van het gegevensblok en wordt de interne buffer gewist.
Als u de exacte spangrootte wilt berekenen die GetChars nodig is om de resulterende tekens op te slaan, moet de toepassing worden gebruikt GetCharCount.
Als GetChars wordt aangeroepen met flush ingesteld op false, slaat de decoder volgbytes op aan het einde van het gegevensblok in een interne buffer en gebruikt deze in de volgende decoderingsbewerking. De toepassing moet onmiddellijk een blok met gegevens aanroepen GetCharCount voordat hetzelfde blok wordt aangeroepen GetChars , zodat eventuele volgbytes uit het vorige blok worden opgenomen in de berekening.
Als uw toepassing veel segmenten van een invoerstroom wilt converteren, kunt u overwegen de Convert methode te gebruiken. GetChars genereert een uitzondering als de uitvoerspanne niet groot genoeg is, maar Convert zo veel mogelijk ruimte opvult en de geschreven bytes en tekens retourneert, mits de uitvoermatrix ten minste twee tekens toestaat. Zie ook het Encoding.GetChars onderwerp voor meer opmerkingen.
Van toepassing op
GetChars(Byte*, Int32, Char*, Int32, Boolean)
Belangrijk
Deze API is niet CLS-conform.
Wanneer deze worden overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes die beginnen bij de opgegeven byteaanwijzer en bytes in de interne buffer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer. Een parameter geeft aan of de interne status van de decoder na de conversie moet worden gewist.
public:
virtual int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetChars(byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetChars(byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[System.CLSCompliant(false)]
public virtual int GetChars(byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
Parameters
- bytes
- Byte*
Een aanwijzer naar de eerste byte om te decoderen.
- byteCount
- Int32
Het aantal bytes dat moet worden gedecodeerd.
- chars
- Char*
Een aanwijzer naar de locatie waar de resulterende set tekens moet worden geschreven.
- charCount
- Int32
Het maximum aantal tekens dat moet worden geschreven.
- flush
- Boolean
true om de interne toestand van de decoder na de conversie te wissen; anders, false.
Retouren
Het werkelijke aantal tekens dat is geschreven op de locatie die door de chars parameter wordt aangegeven.
- Kenmerken
Uitzonderingen
byteCount of charCount kleiner is dan nul.
charCount is kleiner dan het resulterende aantal tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
Fallback is ingesteld op DecoderExceptionFallback.
Opmerkingen
Houd er rekening mee dat het object de Decoder status opslaat tussen aanroepen naar GetChars. Wanneer de toepassing wordt uitgevoerd met een gegevensstroom, moet deze de flush parameter instellen om true ervoor te zorgen dat de statusinformatie wordt leeggemaakt. Met deze instelling negeert de decoder ongeldige bytes aan het einde van het gegevensblok en wordt de interne buffer gewist.
Als u de exacte buffergrootte wilt berekenen die GetChars nodig is om de resulterende tekens op te slaan, moet de toepassing worden gebruikt GetCharCount.
Als GetChars wordt aangeroepen met flush ingesteld op false, slaat de decoder volgbytes op aan het einde van het gegevensblok in een interne buffer en gebruikt deze in de volgende decoderingsbewerking. De toepassing moet onmiddellijk een blok met gegevens aanroepen GetCharCount voordat hetzelfde blok wordt aangeroepen GetChars , zodat eventuele volgbytes uit het vorige blok worden opgenomen in de berekening.
Als uw toepassing veel segmenten van een invoerstroom wilt converteren, kunt u overwegen de Convert methode te gebruiken. GetChars genereert een uitzondering als de uitvoerbuffer niet groot genoeg is, maar Convert zo veel mogelijk ruimte opvult en de geschreven bytes en tekens retourneert, mits de uitvoermatrix ten minste twee tekens toestaat. Zie ook het Encoding.GetChars onderwerp voor meer opmerkingen.
Zie ook
Van toepassing op
GetChars(Byte[], Int32, Int32, Char[], Int32)
Wanneer deze worden overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes van de opgegeven bytematrix en eventuele bytes in de interne buffer in de opgegeven tekenmatrix.
public:
abstract int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public abstract int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
abstract member GetChars : byte[] * int * int * char[] * int -> int
Public MustOverride Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer
Parameters
- bytes
- Byte[]
De bytematrix met de reeks bytes die moet worden gedecodeerd.
- byteIndex
- Int32
De index van de eerste byte om te decoderen.
- byteCount
- Int32
Het aantal bytes dat moet worden gedecodeerd.
- chars
- Char[]
De tekenmatrix die de resulterende set tekens bevat.
- charIndex
- Int32
De index waarop de resulterende set tekens moet worden geschreven.
Retouren
Het werkelijke aantal tekens dat is geschreven in chars.
Uitzonderingen
byteIndex of byteCountcharIndex kleiner is dan nul.
– of –
byteIndex en byteCount geef geen geldig bereik aan in bytes.
– of –
charIndex is geen geldige index in chars.
chars heeft niet voldoende capaciteit van charIndex tot het einde van de matrix voor de resulterende tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
Fallback is ingesteld op DecoderExceptionFallback.
Voorbeelden
In het volgende voorbeeld ziet u hoe u een bereik van elementen uit een bytematrix decoderen en opslaat in een Unicode-tekenmatrix. De GetCharCount methode wordt gebruikt om het aantal tekens te berekenen dat nodig is voor het opslaan van de gedecodeerde elementen in de matrix bytes. De GetChars methode ontsleutelt de opgegeven elementen in de bytematrix en slaat deze op in de nieuwe tekenmatrix.
using System;
using System.Text;
class UnicodeEncodingExample {
public static void Main() {
Char[] chars;
Byte[] bytes = new Byte[] {
85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
};
Decoder uniDecoder = Encoding.Unicode.GetDecoder();
int charCount = uniDecoder.GetCharCount(bytes, 0, bytes.Length);
chars = new Char[charCount];
int charsDecodedCount = uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0);
Console.WriteLine(
"{0} characters used to decode bytes.", charsDecodedCount
);
Console.Write("Decoded chars: ");
foreach (Char c in chars) {
Console.Write("[{0}]", c);
}
Console.WriteLine();
}
}
/* This code example produces the following output.
7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]
*/
Imports System.Text
Class UnicodeEncodingExample
Public Shared Sub Main()
Dim chars() As Char
Dim bytes() As Byte = { _
85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0 _
}
Dim uniDecoder As Decoder = Encoding.Unicode.GetDecoder()
Dim charCount As Integer = uniDecoder.GetCharCount(bytes, 0, bytes.Length)
chars = New Char(charCount - 1) {}
Dim charsDecodedCount As Integer = _
uniDecoder.GetChars(bytes, 0, bytes.Length, chars, 0)
Console.WriteLine( _
"{0} characters used to decode bytes.", _
charsDecodedCount _
)
Console.Write("Decoded chars: ")
Dim c As Char
For Each c In chars
Console.Write("[{0}]", c)
Next c
Console.WriteLine()
End Sub
End Class
'This code example produces the following output.
'
'7 characters used to decode bytes.
'Decoded chars: [U][n][i][c][o][d][e]
'
Opmerkingen
Houd er rekening mee dat het object de Decoder status opslaat tussen aanroepen naar GetChars. Wanneer de toepassing wordt uitgevoerd met een gegevensstroom, moet deze de flush parameter instellen om true ervoor te zorgen dat de statusinformatie wordt leeggemaakt. Met deze instelling negeert de decoder ongeldige bytes aan het einde van het gegevensblok en wordt de interne buffer gewist.
Als u de exacte matrixgrootte wilt berekenen die GetChars nodig is om de resulterende tekens op te slaan, moet de toepassing worden gebruikt GetCharCount.
Als GetChars wordt aangeroepen met flush ingesteld op false, slaat de decoder volgbytes op aan het einde van het gegevensblok in een interne buffer en gebruikt deze in de volgende decoderingsbewerking. De toepassing moet onmiddellijk een blok met gegevens aanroepen GetCharCount voordat hetzelfde blok wordt aangeroepen GetChars , zodat eventuele volgbytes uit het vorige blok worden opgenomen in de berekening.
Als uw toepassing veel segmenten van een invoerstroom wilt converteren, kunt u overwegen de Convert methode te gebruiken. GetChars genereert een uitzondering als de uitvoerbuffer niet groot genoeg is, maar Convert zo veel mogelijk ruimte opvult en de geschreven bytes en tekens retourneert, mits de uitvoermatrix ten minste twee tekens toestaat. Zie ook het Encoding.GetChars onderwerp voor meer opmerkingen.
Zie ook
Van toepassing op
GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)
Wanneer deze worden overschreven in een afgeleide klasse, ontsleutelt u een reeks bytes van de opgegeven bytematrix en eventuele bytes in de interne buffer in de opgegeven tekenmatrix. Een parameter geeft aan of de interne status van de decoder na de conversie moet worden gewist.
public:
virtual int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex, bool flush);
public virtual int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex, bool flush);
abstract member GetChars : byte[] * int * int * char[] * int * bool -> int
override this.GetChars : byte[] * int * int * char[] * int * bool -> int
Public Overridable Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer, flush As Boolean) As Integer
Parameters
- bytes
- Byte[]
De bytematrix met de reeks bytes die moet worden gedecodeerd.
- byteIndex
- Int32
De index van de eerste byte om te decoderen.
- byteCount
- Int32
Het aantal bytes dat moet worden gedecodeerd.
- chars
- Char[]
De tekenmatrix die de resulterende set tekens bevat.
- charIndex
- Int32
De index waarop de resulterende set tekens moet worden geschreven.
- flush
- Boolean
true om de interne toestand van de decoder na de conversie te wissen; anders, false.
Retouren
Het werkelijke aantal tekens dat in de chars parameter is geschreven.
Uitzonderingen
byteIndex of byteCountcharIndex kleiner is dan nul.
– of –
byteIndex en byteCount geef geen geldig bereik aan in bytes.
– of –
charIndex is geen geldige index in chars.
chars heeft niet voldoende capaciteit van charIndex tot het einde van de matrix voor de resulterende tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
Fallback is ingesteld op DecoderExceptionFallback.
Opmerkingen
Houd er rekening mee dat het object de Decoder status opslaat tussen aanroepen naar GetChars. Wanneer de toepassing wordt uitgevoerd met een gegevensstroom, moet deze de flush parameter instellen om true ervoor te zorgen dat de statusinformatie wordt leeggemaakt. Met deze instelling negeert de decoder ongeldige bytes aan het einde van het gegevensblok en wordt de interne buffer gewist.
Als u de exacte matrixgrootte wilt berekenen die GetChars nodig is om de resulterende tekens op te slaan, moet de toepassing worden gebruikt GetCharCount.
Als GetChars wordt aangeroepen met flush ingesteld op false, slaat de decoder volgbytes op aan het einde van het gegevensblok in een interne buffer en gebruikt deze in de volgende decoderingsbewerking. De toepassing moet onmiddellijk een blok met gegevens aanroepen GetCharCount voordat hetzelfde blok wordt aangeroepen GetChars , zodat eventuele volgbytes uit het vorige blok worden opgenomen in de berekening.
Als uw toepassing veel segmenten van een invoerstroom wilt converteren, kunt u overwegen de Convert methode te gebruiken. GetChars genereert een uitzondering als de uitvoerbuffer niet groot genoeg is, maar Convert zo veel mogelijk ruimte opvult en de geschreven bytes en tekens retourneert, mits de uitvoermatrix ten minste twee tekens toestaat. Zie ook het Encoding.GetChars onderwerp voor meer opmerkingen.