Decoder.GetChars Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Quando ne viene eseguito l'override in una classe derivata, decodifica una sequenza di byte in un set di caratteri.
Overload
GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte nell'intervallo e tutti i byte presenti nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se annullare 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 ai byte specificato e qualsiasi byte presente nel buffer interno in un set di caratteri archiviati a partire dal puntatore ai caratteri specificato. Un parametro indica se annullare lo stato interno del decodificatore dopo la conversione. |
GetChars(Byte[], Int32, Int32, Char[], Int32) |
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte della matrice di byte specificata e qualsiasi byte presente nel buffer interno nella matrice di caratteri specificata. |
GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte della matrice di byte specificata e qualsiasi byte presente nel buffer interno nella matrice di caratteri specificata. Un parametro indica se annullare lo stato interno del decodificatore dopo la conversione. |
GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte nell'intervallo e tutti i byte presenti nel buffer interno in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. Un parametro indica se annullare 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.
- flush
- Boolean
true
per cancellare lo stato interno del decodificatore dopo la conversione. In caso contrario, false
.
Restituisce
Numero effettivo di caratteri scritti nell'intervallo indicato dal parametro chars
.
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 GetCharCount
GetChars
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 è sufficiente, ma Convert riempirà il maggior numero possibile di spazio e restituirà i byte letti e i 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)
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
Importante
Questa API non è conforme a CLS.
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte a partire dal puntatore ai byte specificato e qualsiasi byte presente nel buffer interno in un set di caratteri archiviati a partire dal puntatore ai caratteri specificato. Un parametro indica se annullare 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)]
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
[<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
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
.
Restituisce
Numero effettivo di caratteri scritti nella posizione indicata dal parametro chars
.
- Attributi
Eccezioni
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 GetCharCount
GetChars
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 i 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)
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte della matrice di byte specificata e qualsiasi byte presente 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 che deve contenere il set di caratteri risultante.
- charIndex
- Int32
Indice in corrispondenza del quale iniziare a scrivere il set di caratteri risultante.
Restituisce
Numero effettivo di caratteri scritti in chars
.
Eccezioni
byteIndex
o byteCount
o charIndex
è minore di zero.
-oppure-
byteindex
e byteCount
non identificano un intervallo valido in bytes
.
-oppure-
charIndex
non è un indice valido in chars
.
chars
non dispone di sufficiente capacità da charIndex
alla 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 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]
'
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 GetCharCount
GetChars
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 i 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)
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
- Origine:
- Decoder.cs
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte della matrice di byte specificata e qualsiasi byte presente nel buffer interno nella matrice di caratteri specificata. Un parametro indica se annullare 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 che deve 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
.
Restituisce
Numero effettivo di caratteri scritti nel parametro chars
.
Eccezioni
byteIndex
o byteCount
o charIndex
è minore di zero.
-oppure-
byteindex
e byteCount
non identificano un intervallo valido in bytes
.
-oppure-
charIndex
non è un indice valido in chars
.
chars
non dispone di sufficiente capacità da charIndex
alla 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 GetCharCount
GetChars
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 i caratteri scritti, purché la matrice di output consenta almeno due caratteri. Vedere anche l'argomento Encoding.GetChars per altri commenti.