Partilhar via


ASCIIEncoding.GetChars Método

Definição

Decodifica uma sequência de bytes em um conjunto de caracteres.

Sobrecargas

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

Decodifica o intervalo de bytes especificado no intervalo de caracteres especificado.

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

Decodifica uma sequência de bytes começando no ponteiro de byte especificado em um conjunto de caracteres armazenados começando no ponteiro de caractere especificado.

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

Decodifica uma sequência de bytes da matriz de bytes especificada na matriz de caracteres especificada.

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

Origem:
ASCIIEncoding.cs
Origem:
ASCIIEncoding.cs
Origem:
ASCIIEncoding.cs

Decodifica o intervalo de bytes especificado no intervalo de caracteres especificado.

public:
 override int GetChars(ReadOnlySpan<System::Byte> bytes, Span<char> chars);
public override int GetChars (ReadOnlySpan<byte> bytes, Span<char> chars);
override this.GetChars : ReadOnlySpan<byte> * Span<char> -> int
Public Overrides Function GetChars (bytes As ReadOnlySpan(Of Byte), chars As Span(Of Char)) As Integer

Parâmetros

bytes
ReadOnlySpan<Byte>

O intervalo que contém os bytes a serem decodificados.

chars
Span<Char>

O intervalo que deve conter o conjunto de caracteres resultante.

Retornos

O número real de caracteres gravados em chars.

Comentários

Para calcular o tamanho exato exigido por GetChars para armazenar os caracteres resultantes, use GetCharCount. Para calcular o tamanho máximo, use GetMaxCharCount. O GetCharCount método geralmente permite a alocação de menos memória, enquanto o GetMaxCharCount método geralmente é executado mais rapidamente.

Os dados a serem convertidos, como dados lidos de um fluxo, só podem estar disponíveis em blocos sequenciais. Nesse caso, ou se a quantidade de dados for tão grande que precisa ser dividida em blocos menores, você deve usar o Decoder ou o Encoder fornecido pelo GetDecoder método ou pelo GetEncoder método , respectivamente.

ASCIIEncoding não fornece detecção de erros. Qualquer byte maior que hexadecimal 0x7F é decodificado como o ponto de interrogação Unicode ("?").

Cuidado

Por motivos de segurança, você deve usar UTF8Encoding, UnicodeEncodingou UTF32Encoding e habilitar a detecção de erros.

Aplica-se a

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

Origem:
ASCIIEncoding.cs
Origem:
ASCIIEncoding.cs
Origem:
ASCIIEncoding.cs

Importante

Esta API não está em conformidade com CLS.

Alternativa em conformidade com CLS
System.Text.ASCIIEncoding.GetChars(Byte[], Int32, Int32, Char[], Int32)

Decodifica uma sequência de bytes começando no ponteiro de byte especificado em um conjunto de caracteres armazenados começando no ponteiro de caractere especificado.

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)]
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)>]
[<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
[<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

Parâmetros

bytes
Byte*

Um ponteiro do primeiro byte a ser decodificado.

byteCount
Int32

O número de bytes a serem decodificados.

chars
Char*

Um ponteiro para o local no qual a gravação do conjunto de caracteres resultante deve ser iniciada.

charCount
Int32

O número máximo de caracteres a serem gravados.

Retornos

O número real de caracteres gravados no local indicado por chars.

Atributos

Exceções

bytes é null.

- ou -

chars é null.

byteCount ou charCount é menor que zero.

charCount é menor que o número de caracteres resultante.

Comentários

Para calcular o tamanho exato da matriz exigido por GetChars para armazenar os caracteres resultantes, o aplicativo usa GetCharCount. Para calcular o tamanho máximo da matriz, o aplicativo deve usar GetMaxCharCount. O GetCharCount método geralmente permite a alocação de menos memória, enquanto o GetMaxCharCount método geralmente é executado mais rapidamente.

Os dados a serem convertidos, como dados lidos de um fluxo, só podem estar disponíveis em blocos sequenciais. Nesse caso, ou se a quantidade de dados for tão grande que precisa ser dividida em blocos menores, o aplicativo deverá usar o Decoder ou o Encoder fornecido pelo GetDecoder método ou pelo GetEncoder método , respectivamente.

ASCIIEncoding não fornece detecção de erros. Qualquer byte maior que 0x7F hexadecimais é decodificado como o ponto de interrogação Unicode ("?").

Cuidado

Por motivos de segurança, é recomendável que seu aplicativo use UTF8Encoding, UnicodeEncodingou UTF32Encoding e habilite a detecção de erros.

Confira também

Aplica-se a

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

Origem:
ASCIIEncoding.cs
Origem:
ASCIIEncoding.cs
Origem:
ASCIIEncoding.cs

Decodifica uma sequência de bytes da matriz de bytes especificada na matriz de caracteres especificada.

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

Parâmetros

bytes
Byte[]

A matriz de bytes que contém a sequência de bytes a ser decodificada.

byteIndex
Int32

O índice do primeiro byte a ser decodificado.

byteCount
Int32

O número de bytes a serem decodificados.

chars
Char[]

A matriz de caracteres que deve conter o conjunto de caracteres resultante.

charIndex
Int32

O índice no qual será iniciada a gravação do conjunto de caracteres resultante.

Retornos

O número real de caracteres gravados em chars.

Exceções

bytes é null.

- ou -

chars é null.

byteIndex, byteCount ou charIndex é menor que zero.

- ou -

byteindex e byteCount não denotam um intervalo válido em bytes.

- ou -

charIndex não é um índice válido em chars.

chars não tem capacidade suficiente do charIndex até o final da matriz para acomodar os caracteres resultantes.

Exemplos

O exemplo a seguir demonstra como decodificar um intervalo de elementos de uma matriz de bytes e armazenar o resultado em um conjunto de elementos em uma matriz de caracteres Unicode.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {65,83,67,73,73,32,69,110,99,111,100,105,110,103,32,69,120,97,109,112,108,101};
   ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
   int charCount = ascii->GetCharCount( bytes, 6, 8 );
   chars = gcnew array<Char>(charCount);
   int charsDecodedCount = ascii->GetChars( bytes, 6, 8, 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();
}
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

Comentários

Para calcular o tamanho exato da matriz exigido por GetChars para armazenar os caracteres resultantes, o aplicativo usa GetCharCount. Para calcular o tamanho máximo da matriz, o aplicativo deve usar GetMaxCharCount. O GetCharCount método geralmente permite a alocação de menos memória, enquanto o GetMaxCharCount método geralmente é executado mais rapidamente.

Os dados a serem convertidos, como dados lidos de um fluxo, só podem estar disponíveis em blocos sequenciais. Nesse caso, ou se a quantidade de dados for tão grande que precisa ser dividida em blocos menores, o aplicativo deverá usar o Decoder ou o Encoder fornecido pelo GetDecoder método ou pelo GetEncoder método , respectivamente.

ASCIIEncoding não fornece detecção de erros. Qualquer byte maior que 0x7F hexadecimais é decodificado como o ponto de interrogação Unicode ("?").

Cuidado

Por motivos de segurança, é recomendável que seu aplicativo use UTF8Encoding, UnicodeEncodingou UTF32Encoding e habilite a detecção de erros.

Confira também

Aplica-se a