ASCIIEncoding.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.

CLS-conform alternatief
System.Text.ASCIIEncoding.GetChars(Byte[], Int32, Int32, Char[], Int32)

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.Security.SecurityCritical]
public override int GetChars(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.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
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.Security.SecurityCritical>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
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 aangegeven door chars.

Kenmerken

Uitzonderingen

bytes is null.

– of –

chars is null.

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

DecoderFallback is ingesteld op DecoderExceptionFallback.

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. Met de GetCharCount methode kan over het algemeen minder geheugen worden toegewezen, terwijl de GetMaxCharCount methode doorgaans sneller wordt uitgevoerd.

Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stream worden gelezen, kunnen alleen in opeenvolgende blokken beschikbaar zijn. 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.

ASCIIEncoding biedt geen foutdetectie. Elke byte groter dan hexadecimale 0x7F wordt gedecodeerd als het Unicode-vraagteken ('?').

Caution

Om veiligheidsredenen wordt uw toepassing aanbevolen om foutdetectie te gebruiken UTF8Encoding, UnicodeEncodingof UTF32Encoding in te schakelen.

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.

– of –

chars is null.

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

DecoderFallback is ingesteld op DecoderExceptionFallback.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een bereik van elementen uit een bytematrix decoderen en het resultaat opslaat in een set elementen in een Unicode-tekenmatrix.

using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
             65,  83,  67,  73,  73,  32,  69,
            110,  99, 111, 100, 105, 110, 103,
             32,  69, 120,  97, 109, 112, 108, 101
        };

        ASCIIEncoding ascii = new ASCIIEncoding();

        int charCount = ascii.GetCharCount(bytes, 6, 8);
        chars = new Char[charCount];
        int charsDecodedCount = ascii.GetChars(bytes, 6, 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 ASCIIEncodingExample
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
             65,  83,  67,  73,  73,  32,  69, _
            110,  99, 111, 100, 105, 110, 103, _
             32,  69, 120,  97, 109, 112, 108, 101}

        Dim ascii As New ASCIIEncoding()

        Dim charCount As Integer = ascii.GetCharCount(bytes, 6, 8)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = ascii.GetChars(bytes, 6, 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. Met de GetCharCount methode kan over het algemeen minder geheugen worden toegewezen, terwijl de GetMaxCharCount methode doorgaans sneller wordt uitgevoerd.

Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stream worden gelezen, kunnen alleen in opeenvolgende blokken beschikbaar zijn. 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.

ASCIIEncoding biedt geen foutdetectie. Elke byte groter dan hexadecimale 0x7F wordt gedecodeerd als het Unicode-vraagteken ('?').

Caution

Om veiligheidsredenen wordt uw toepassing aanbevolen om foutdetectie te gebruiken UTF8Encoding, UnicodeEncodingof UTF32Encoding in te schakelen.

Zie ook

Van toepassing op