Decoder.GetChars Metodo

Definizione

In caso di override in una classe derivata, decodifica una sequenza di byte in un set di caratteri.

Overload

Nome Descrizione
GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

In caso di override in una classe derivata, decodifica una sequenza di byte di intervallo ed eventuali byte nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione.

GetChars(Byte*, Int32, Char*, Int32, Boolean)

Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte a partire dal puntatore di byte specificato ed eventuali byte nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione.

GetChars(Byte[], Int32, Int32, Char[], Int32)

In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata ed eventuali byte nel buffer interno nella matrice di caratteri specificata.

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata ed eventuali byte nel buffer interno nella matrice di caratteri specificata. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione.

GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)

In caso di override in una classe derivata, decodifica una sequenza di byte di intervallo ed eventuali byte nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione.

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

Parametri

bytes
ReadOnlySpan<Byte>

Intervallo di byte da decodificare.

chars
Span<Char>

Intervallo per scrivere il set di caratteri risultante.

flush
Boolean

true per cancellare lo stato interno del decodificatore dopo la conversione; in caso contrario, false.

Valori restituiti

Numero effettivo di caratteri scritti nell'intervallo indicato dal chars parametro .

Commenti

Tenere presente che l'oggetto Decoder salva lo stato tra le chiamate a GetChars. Quando l'applicazione viene eseguita con un flusso di dati, deve impostare il flush parametro su true per assicurarsi che le informazioni sullo stato vengano scaricate. Con questa impostazione, il decodificatore ignora i byte non validi alla fine del blocco di dati e cancella il buffer interno.

Per calcolare la dimensione esatta dell'intervallo che GetChars richiede di archiviare i caratteri risultanti, l'applicazione deve usare GetCharCount.

Se GetChars viene chiamato con flush impostato su false, il decodificatore archivia i byte finali alla fine del blocco di dati in un buffer interno e li usa nell'operazione di decodifica successiva. L'applicazione deve chiamare su un blocco di dati immediatamente prima di chiamare GetCharCountGetChars sullo stesso blocco, in modo che tutti i byte finali del blocco precedente siano inclusi nel calcolo.

Se l'applicazione consiste nel convertire molti segmenti di un flusso di input, è consigliabile usare il Convert metodo . GetChars genererà un'eccezione se l'intervallo di output non è sufficientemente grande, ma Convert riempirà il maggior numero possibile di spazio e restituirà i byte letti e caratteri scritti, purché la matrice di output consenta almeno due caratteri. Vedere anche l'argomento Encoding.GetChars per altri commenti.

Si applica a

GetChars(Byte*, Int32, Char*, Int32, Boolean)

Importante

Questa API non è conforme a CLS.

Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte a partire dal puntatore di byte specificato ed eventuali byte nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione.

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

Parametri

bytes
Byte*

Puntatore al primo byte da decodificare.

byteCount
Int32

Numero di byte da decodificare.

chars
Char*

Puntatore alla posizione in cui iniziare a scrivere il set di caratteri risultante.

charCount
Int32

Numero massimo di caratteri da scrivere.

flush
Boolean

true per cancellare lo stato interno del decodificatore dopo la conversione; in caso contrario, false.

Valori restituiti

Numero effettivo di caratteri scritti nella posizione indicata dal chars parametro .

Attributi

Eccezioni

bytes è null (Nothing).

oppure

chars è null (Nothing).

byteCount o charCount è minore di zero.

charCount è minore del numero di caratteri risultante.

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

Fallback è impostato su DecoderExceptionFallback.

Commenti

Tenere presente che l'oggetto Decoder salva lo stato tra le chiamate a GetChars. Quando l'applicazione viene eseguita con un flusso di dati, deve impostare il flush parametro su true per assicurarsi che le informazioni sullo stato vengano scaricate. Con questa impostazione, il decodificatore ignora i byte non validi alla fine del blocco di dati e cancella il buffer interno.

Per calcolare la dimensione esatta del buffer che GetChars richiede di archiviare i caratteri risultanti, l'applicazione deve usare GetCharCount.

Se GetChars viene chiamato con flush impostato su false, il decodificatore archivia i byte finali alla fine del blocco di dati in un buffer interno e li usa nell'operazione di decodifica successiva. L'applicazione deve chiamare su un blocco di dati immediatamente prima di chiamare GetCharCountGetChars sullo stesso blocco, in modo che tutti i byte finali del blocco precedente siano inclusi nel calcolo.

Se l'applicazione consiste nel convertire molti segmenti di un flusso di input, è consigliabile usare il Convert metodo . GetChars genererà un'eccezione se il buffer di output non è sufficientemente grande, ma Convert riempirà il maggior numero possibile di spazio e restituirà i byte letti e caratteri scritti, purché la matrice di output consenta almeno due caratteri. Vedere anche l'argomento Encoding.GetChars per altri commenti.

Vedi anche

Si applica a

GetChars(Byte[], Int32, Int32, Char[], Int32)

In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata ed eventuali byte nel buffer interno nella matrice di caratteri specificata.

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

Parametri

bytes
Byte[]

Matrice di byte contenente la sequenza di byte da decodificare.

byteIndex
Int32

Indice del primo byte da decodificare.

byteCount
Int32

Numero di byte da decodificare.

chars
Char[]

Matrice di caratteri in cui contenere il set di caratteri risultante.

charIndex
Int32

Indice in corrispondenza del quale iniziare a scrivere il set di caratteri risultante.

Valori restituiti

Numero effettivo di caratteri scritti in chars.

Eccezioni

bytes è null (Nothing).

oppure

chars è null (Nothing).

byteIndex o è byteCountcharIndex minore di zero.

oppure

byteIndex e byteCount non indicano un intervallo valido in bytes.

oppure

charIndex non è un indice valido in chars.

chars non dispone di capacità sufficiente dalla charIndex fine della matrice per contenere i caratteri risultanti.

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

Fallback è impostato su DecoderExceptionFallback.

Esempio

Nell'esempio seguente viene illustrato come decodificare un intervallo di elementi da una matrice di byte e archiviarli in una matrice di caratteri Unicode. Il GetCharCount metodo viene usato per calcolare il numero di caratteri necessari per archiviare gli elementi decodificati nella matrice bytes. Il GetChars metodo decodifica gli elementi specificati nella matrice di byte e li archivia nella nuova matrice di caratteri.

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]
'

Commenti

Tenere presente che l'oggetto Decoder salva lo stato tra le chiamate a GetChars. Quando l'applicazione viene eseguita con un flusso di dati, deve impostare il flush parametro su true per assicurarsi che le informazioni sullo stato vengano scaricate. Con questa impostazione, il decodificatore ignora i byte non validi alla fine del blocco di dati e cancella il buffer interno.

Per calcolare la dimensione esatta della matrice che GetChars richiede di archiviare i caratteri risultanti, l'applicazione deve usare GetCharCount.

Se GetChars viene chiamato con flush impostato su false, il decodificatore archivia i byte finali alla fine del blocco di dati in un buffer interno e li usa nell'operazione di decodifica successiva. L'applicazione deve chiamare su un blocco di dati immediatamente prima di chiamare GetCharCountGetChars sullo stesso blocco, in modo che tutti i byte finali del blocco precedente siano inclusi nel calcolo.

Se l'applicazione consiste nel convertire molti segmenti di un flusso di input, è consigliabile usare il Convert metodo . GetChars genererà un'eccezione se il buffer di output non è sufficientemente grande, ma Convert riempirà il maggior numero possibile di spazio e restituirà i byte letti e caratteri scritti, purché la matrice di output consenta almeno due caratteri. Vedere anche l'argomento Encoding.GetChars per altri commenti.

Vedi anche

Si applica a

GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)

In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata ed eventuali byte nel buffer interno nella matrice di caratteri specificata. Un parametro indica se cancellare lo stato interno del decodificatore dopo la conversione.

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

Parametri

bytes
Byte[]

Matrice di byte contenente la sequenza di byte da decodificare.

byteIndex
Int32

Indice del primo byte da decodificare.

byteCount
Int32

Numero di byte da decodificare.

chars
Char[]

Matrice di caratteri in cui contenere il set di caratteri risultante.

charIndex
Int32

Indice in corrispondenza del quale iniziare a scrivere il set di caratteri risultante.

flush
Boolean

true per cancellare lo stato interno del decodificatore dopo la conversione; in caso contrario, false.

Valori restituiti

Numero effettivo di caratteri scritti nel chars parametro .

Eccezioni

bytes è null (Nothing).

oppure

chars è null (Nothing).

byteIndex o è byteCountcharIndex minore di zero.

oppure

byteIndex e byteCount non indicano un intervallo valido in bytes.

oppure

charIndex non è un indice valido in chars.

chars non dispone di capacità sufficiente dalla charIndex fine della matrice per contenere i caratteri risultanti.

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

Fallback è impostato su DecoderExceptionFallback.

Commenti

Tenere presente che l'oggetto Decoder salva lo stato tra le chiamate a GetChars. Quando l'applicazione viene eseguita con un flusso di dati, deve impostare il flush parametro su true per assicurarsi che le informazioni sullo stato vengano scaricate. Con questa impostazione, il decodificatore ignora i byte non validi alla fine del blocco di dati e cancella il buffer interno.

Per calcolare la dimensione esatta della matrice che GetChars richiede di archiviare i caratteri risultanti, l'applicazione deve usare GetCharCount.

Se GetChars viene chiamato con flush impostato su false, il decodificatore archivia i byte finali alla fine del blocco di dati in un buffer interno e li usa nell'operazione di decodifica successiva. L'applicazione deve chiamare su un blocco di dati immediatamente prima di chiamare GetCharCountGetChars sullo stesso blocco, in modo che tutti i byte finali del blocco precedente siano inclusi nel calcolo.

Se l'applicazione consiste nel convertire molti segmenti di un flusso di input, è consigliabile usare il Convert metodo . GetChars genererà un'eccezione se il buffer di output non è sufficientemente grande, ma Convert riempirà il maggior numero possibile di spazio e restituirà i byte letti e caratteri scritti, purché la matrice di output consenta almeno due caratteri. Vedere anche l'argomento Encoding.GetChars per altri commenti.

Vedi anche

Si applica a