UnicodeEncoding.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.
Decodeert een reeks bytes in een reeks tekens.
Overloads
| Name | Description |
|---|---|
| GetChars(Byte*, Int32, Char*, Int32) |
Decodeert een reeks bytes die beginnen bij de opgegeven byteaanwijzer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
Decodeert een reeks bytes van de opgegeven bytematrix in de opgegeven tekenmatrix. |
GetChars(Byte*, Int32, Char*, Int32)
Belangrijk
Deze API is niet CLS-conform.
Decodeert een reeks bytes die beginnen bij de opgegeven byteaanwijzer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer.
public:
override int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars(byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public override int GetChars(byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
public override int GetChars(byte* bytes, int byteCount, char* chars, int charCount);
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> 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.
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.
Foutdetectie is ingeschakeld en bytes bevat een ongeldige reeks bytes.
– of –
charCount is kleiner dan het resulterende aantal tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
DecoderFallback is ingesteld op DecoderExceptionFallback.
Opmerkingen
Voor het berekenen van de exacte matrixgrootte die GetChars nodig is om de resulterende tekens op te slaan, gebruikt GetCharCountde toepassing . Als u de maximale matrixgrootte wilt berekenen, moet de toepassing gebruikmaken van GetMaxCharCount. De GetCharCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxCharCount methode over het algemeen sneller wordt uitgevoerd.
Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.
Als het bereik van bytes dat moet worden gedecodeerd, de bytevolgordemarkering (BOM) bevat en de bytematrix is geretourneerd door een methode van een niet-bombewust type, wordt het teken U+FFFE opgenomen in de tekenmatrix die door deze methode wordt geretourneerd. U kunt deze verwijderen door de String.TrimStart methode aan te roepen.
Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stroom worden gelezen, zijn mogelijk alleen in opeenvolgende blokken beschikbaar. In dit geval of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet de toepassing respectievelijk het Decoder of het Encoder object gebruiken dat door de GetDecoder of de GetEncoder methode wordt geleverd.
Zie ook
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)
Van toepassing op
GetChars(Byte[], Int32, Int32, Char[], Int32)
Decodeert een reeks bytes van de opgegeven bytematrix in de opgegeven tekenmatrix.
public:
override int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
override this.GetChars : byte[] * int * int * char[] * int -> int
Public Overrides 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.
Foutdetectie is ingeschakeld en bytes bevat een ongeldige reeks bytes.
– of –
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
DecoderFallback is ingesteld op DecoderExceptionFallback.
Voorbeelden
In het volgende voorbeeld ziet u hoe u de GetChars methode gebruikt om een bereik met elementen in een bytematrix te decoderen en het resultaat op te slaan in een 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
};
UnicodeEncoding Unicode = new UnicodeEncoding();
int charCount = Unicode.GetCharCount(bytes, 2, 8);
chars = new Char[charCount];
int charsDecodedCount = Unicode.GetChars(bytes, 2, 8, 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();
}
}
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 uni As New UnicodeEncoding()
Dim charCount As Integer = uni.GetCharCount(bytes, 2, 8)
chars = New Char(charCount - 1) {}
Dim charsDecodedCount As Integer = uni.GetChars(bytes, 2, 8, 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
Opmerkingen
Voor het berekenen van de exacte matrixgrootte die is vereist voor GetChars het opslaan van de resulterende tekens, gebruikt GetCharCountde toepassing . Als u de maximale matrixgrootte wilt berekenen, moet de toepassing gebruikmaken van GetMaxCharCount. De GetCharCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxCharCount methode over het algemeen sneller wordt uitgevoerd.
Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.
Als het bereik van bytes dat moet worden gedecodeerd, de bytevolgordemarkering (BOM) bevat en de bytematrix is geretourneerd door een methode van een niet-bombewust type, wordt het teken U+FFFE opgenomen in de tekenmatrix die door deze methode wordt geretourneerd. U kunt deze verwijderen door de String.TrimStart methode aan te roepen.
Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stroom worden gelezen, zijn mogelijk alleen in opeenvolgende blokken beschikbaar. In dit geval, of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet de toepassing respectievelijk de Decoder door de GetDecoder methode of de methode opgegeven methode Encoder of de GetEncoder methode gebruiken.
Zie ook
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)