Decoder.GetChars Méthode

Définition

En cas de substitution dans une classe dérivée, décode une séquence d'octets en jeu de caractères.

Surcharges

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

En cas de substitution dans une classe dérivée, décode une séquence d’octets d’étendue et les octets de la mémoire tampon interne en un jeu de caractères, stockés à partir du pointeur de caractère spécifié. Un paramètre indique si l'état interne du décodeur doit être effacé après la conversion.

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

En cas de substitution dans une classe dérivée, décode une séquence d'octets démarrant au pointeur d'octet spécifié et les octets de la mémoire tampon interne en un jeu de caractères, stockés à partir du pointeur de caractère spécifié. Un paramètre indique si l'état interne du décodeur doit être effacé après la conversion.

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

En cas de substitution dans une classe dérivée, décode une séquence d'octets du tableau d'octets spécifié et les octets de la mémoire tampon interne dans le tableau de caractères spécifié.

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

En cas de substitution dans une classe dérivée, décode une séquence d'octets du tableau d'octets spécifié et les octets de la mémoire tampon interne dans le tableau de caractères spécifié. Un paramètre indique si l'état interne du décodeur doit être effacé après la conversion.

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

En cas de substitution dans une classe dérivée, décode une séquence d’octets d’étendue et les octets de la mémoire tampon interne en un jeu de caractères, stockés à partir du pointeur de caractère spécifié. Un paramètre indique si l'état interne du décodeur doit être effacé après la conversion.

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

Paramètres

bytes
ReadOnlySpan<Byte>

Étendue d’octets à décoder.

chars
Span<Char>

Étendue pour écrire le jeu de caractères obtenu.

flush
Boolean

true pour effacer l'état interne du décodeur après la conversion ; sinon, false.

Retours

Int32

Nombre réel de caractères écrits dans l’étendue indiquée par le paramètre chars.

Remarques

N’oubliez pas que l' Decoder objet enregistre l’état entre les appels à GetChars . Lorsque l’application est effectuée avec un flux de données, elle doit affecter au flush paramètre la valeur true pour s’assurer que les informations d’État sont vidées. Avec ce paramètre, le décodeur ignore les octets non valides à la fin du bloc de données et efface la mémoire tampon interne.

Pour calculer la taille exacte de l’étendue nécessitant le GetChars stockage des caractères résultants, l’application doit utiliser GetCharCount .

Si GetChars est appelé avec flush défini sur false , le décodeur stocke les octets de fin à la fin du bloc de données dans une mémoire tampon interne et les utilise dans l’opération de décodage suivante. L’application doit appeler GetCharCount un bloc de données immédiatement avant d’appeler GetChars sur le même bloc, afin que tous les octets de fin du bloc précédent soient inclus dans le calcul.

Si votre application doit convertir de nombreux segments d’un flux d’entrée, envisagez d’utiliser la Convert méthode. GetChars lève une exception si l’étendue de sortie n’est pas assez grande, mais Convert remplit autant d’espace que possible et retourne les octets lus et char écrits, à condition que le tableau de sortie autorise au moins deux caractères. Consultez également la Encoding.GetChars rubrique pour obtenir plus de commentaires.

S’applique à

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

Important

Cette API n’est pas conforme CLS.

En cas de substitution dans une classe dérivée, décode une séquence d'octets démarrant au pointeur d'octet spécifié et les octets de la mémoire tampon interne en un jeu de caractères, stockés à partir du pointeur de caractère spécifié. Un paramètre indique si l'état interne du décodeur doit être effacé après la conversion.

public:
 virtual int GetChars(System::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);
public virtual int GetChars (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)>]
abstract member GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int * bool -> int
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)>]
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

Paramètres

bytes
Byte*

Pointeur du premier octet à décoder.

byteCount
Int32

Nombre d'octets à décoder.

chars
Char*

Pointeur de l'emplacement où commencer l'écriture du jeu de caractères obtenu.

charCount
Int32

Nombre maximal de caractères à écrire.

flush
Boolean

true pour effacer l'état interne du décodeur après la conversion ; sinon, false.

Retours

Int32

Nombre réel de caractères écrits à l'emplacement indiqué par le paramètre chars.

Attributs

Exceptions

bytes a la valeur null (Nothing).

  • ou -

chars a la valeur null (Nothing).

byteCount ou charCount est inférieur à zéro.

charCount est inférieur au nombre de caractères obtenus.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET)

-et-

Fallback a la valeur DecoderExceptionFallback.

Remarques

N’oubliez pas que l' Decoder objet enregistre l’état entre les appels à GetChars . Lorsque l’application est effectuée avec un flux de données, elle doit affecter au flush paramètre la valeur true pour s’assurer que les informations d’État sont vidées. Avec ce paramètre, le décodeur ignore les octets non valides à la fin du bloc de données et efface la mémoire tampon interne.

Pour calculer la taille exacte de la mémoire tampon GetChars requise pour stocker les caractères obtenus, l’application doit utiliser GetCharCount .

Si GetChars est appelé avec flush défini sur false , le décodeur stocke les octets de fin à la fin du bloc de données dans une mémoire tampon interne et les utilise dans l’opération de décodage suivante. L’application doit appeler GetCharCount un bloc de données immédiatement avant d’appeler GetChars sur le même bloc, afin que tous les octets de fin du bloc précédent soient inclus dans le calcul.

Si votre application doit convertir de nombreux segments d’un flux d’entrée, envisagez d’utiliser la Convert méthode. GetChars lève une exception si la mémoire tampon de sortie n’est pas assez grande, mais Convert remplit autant d’espace que possible et retourne les octets lus et char écrits, à condition que le tableau de sortie autorise au moins deux caractères. Consultez également la Encoding.GetChars rubrique pour obtenir plus de commentaires.

Voir aussi

S’applique à

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

En cas de substitution dans une classe dérivée, décode une séquence d'octets du tableau d'octets spécifié et les octets de la mémoire tampon interne dans le tableau de caractères spécifié.

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

Paramètres

bytes
Byte[]

Tableau d'octets contenant la séquence d'octets à décoder.

byteIndex
Int32

Index du premier octet à décoder.

byteCount
Int32

Nombre d'octets à décoder.

chars
Char[]

Tableau de caractères destiné à contenir le jeu de caractères obtenu.

charIndex
Int32

Index auquel commencer l'écriture du jeu de caractères obtenu.

Retours

Int32

Nombre réel de caractères écrits dans chars.

Exceptions

bytes a la valeur null (Nothing).

  • ou -

chars a la valeur null (Nothing).

byteIndex, byteCount ou charIndex est inférieur à zéro.

  • ou -

byteindex et byteCount ne désignent pas une plage valide dans bytes.

  • ou -

charIndex n'est pas un index valide dans chars.

chars ne possède pas une capacité suffisante entre charIndex et la fin du tableau pour prendre en charge les caractères obtenus.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET)

-et-

Fallback a la valeur DecoderExceptionFallback.

Exemples

L’exemple suivant montre comment décoder une plage d’éléments d’un tableau d’octets et les stocker dans un tableau de caractères Unicode. La GetCharCount méthode est utilisée pour calculer le nombre de caractères nécessaires au stockage des éléments décodés dans le tableau bytes . La GetChars méthode décode les éléments spécifiés dans le tableau d’octets et les stocke dans le nouveau tableau de caractères.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {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 = gcnew array<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: " );
   IEnumerator^ myEnum = chars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c = safe_cast<Char>(myEnum->Current);
      Console::Write( "[{0}]", c.ToString() );
   }

   Console::WriteLine();
}

/* This code example produces the following output.

7 characters used to decode bytes.
Decoded chars: [U][n][i][c][o][d][e]

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

Remarques

N’oubliez pas que l' Decoder objet enregistre l’état entre les appels à GetChars . Lorsque l’application est effectuée avec un flux de données, elle doit affecter au flush paramètre la valeur true pour s’assurer que les informations d’État sont vidées. Avec ce paramètre, le décodeur ignore les octets non valides à la fin du bloc de données et efface la mémoire tampon interne.

Pour calculer la taille exacte du tableau qui GetChars requiert pour stocker les caractères résultants, l’application doit utiliser GetCharCount .

Si GetChars est appelé avec flush défini sur false , le décodeur stocke les octets de fin à la fin du bloc de données dans une mémoire tampon interne et les utilise dans l’opération de décodage suivante. L’application doit appeler GetCharCount un bloc de données immédiatement avant d’appeler GetChars sur le même bloc, afin que tous les octets de fin du bloc précédent soient inclus dans le calcul.

Si votre application doit convertir de nombreux segments d’un flux d’entrée, envisagez d’utiliser la Convert méthode. GetChars lève une exception si la mémoire tampon de sortie n’est pas assez grande, mais Convert remplit autant d’espace que possible et retourne les octets lus et char écrits, à condition que le tableau de sortie autorise au moins deux caractères. Consultez également la Encoding.GetChars rubrique pour obtenir plus de commentaires.

Voir aussi

S’applique à

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

En cas de substitution dans une classe dérivée, décode une séquence d'octets du tableau d'octets spécifié et les octets de la mémoire tampon interne dans le tableau de caractères spécifié. Un paramètre indique si l'état interne du décodeur doit être effacé après la conversion.

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

Paramètres

bytes
Byte[]

Tableau d'octets contenant la séquence d'octets à décoder.

byteIndex
Int32

Index du premier octet à décoder.

byteCount
Int32

Nombre d'octets à décoder.

chars
Char[]

Tableau de caractères destiné à contenir le jeu de caractères obtenu.

charIndex
Int32

Index auquel commencer l'écriture du jeu de caractères obtenu.

flush
Boolean

true pour effacer l'état interne du décodeur après la conversion ; sinon, false.

Retours

Int32

Nombre réel de caractères écrits dans le paramètre chars.

Exceptions

bytes a la valeur null (Nothing).

  • ou -

chars a la valeur null (Nothing).

byteIndex, byteCount ou charIndex est inférieur à zéro.

  • ou -

byteindex et byteCount ne désignent pas une plage valide dans bytes.

  • ou -

charIndex n'est pas un index valide dans chars.

chars ne possède pas une capacité suffisante entre charIndex et la fin du tableau pour prendre en charge les caractères obtenus.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET)

-et-

Fallback a la valeur DecoderExceptionFallback.

Remarques

N’oubliez pas que l' Decoder objet enregistre l’état entre les appels à GetChars . Lorsque l’application est effectuée avec un flux de données, elle doit affecter au flush paramètre la valeur true pour s’assurer que les informations d’État sont vidées. Avec ce paramètre, le décodeur ignore les octets non valides à la fin du bloc de données et efface la mémoire tampon interne.

Pour calculer la taille exacte du tableau qui GetChars requiert pour stocker les caractères résultants, l’application doit utiliser GetCharCount .

Si GetChars est appelé avec flush défini sur false , le décodeur stocke les octets de fin à la fin du bloc de données dans une mémoire tampon interne et les utilise dans l’opération de décodage suivante. L’application doit appeler GetCharCount un bloc de données immédiatement avant d’appeler GetChars sur le même bloc, afin que tous les octets de fin du bloc précédent soient inclus dans le calcul.

Si votre application doit convertir de nombreux segments d’un flux d’entrée, envisagez d’utiliser la Convert méthode. GetChars lève une exception si la mémoire tampon de sortie n’est pas assez grande, mais Convert remplit autant d’espace que possible et retourne les octets lus et char écrits, à condition que le tableau de sortie autorise au moins deux caractères. Consultez également la Encoding.GetChars rubrique pour obtenir plus de commentaires.

Voir aussi

S’applique à