UnicodeEncoding.GetChars Methode

Definitie

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

bytes is null (Nothing).

– of –

chars is null (Nothing).

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

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

bytes is null (Nothing).

– of –

chars is null (Nothing).

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

Van toepassing op