ASCIIEncoding.GetChars Metódus

Definíció

Bájtok sorozatát kódolja karakterkészletté.

Túlterhelések

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

A megadott bájttartományt a megadott karaktertartományba kódolja.

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

A megadott bájtmutatótól kezdve a bájtok sorozatát a megadott karaktermutatótól kezdődően tárolt karakterkészletté dekódolja.

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

Bájtok sorozatát dekódolja a megadott bájttömbből a megadott karaktertömbbe.

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

Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs

A megadott bájttartományt a megadott karaktertartományba kódolja.

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

Paraméterek

bytes
ReadOnlySpan<Byte>

A dekódolni kívánt bájtokat tartalmazó span.

chars
Span<Char>

Az eredményként kapott karakterkészletet tartalmazó időtartam.

Válaszok

A beírt charskarakterek tényleges száma.

Megjegyzések

Az eredményként kapott karakterek tárolásához szükséges GetChars pontos méret kiszámításához használja GetCharCounta következőt: . A maximális méret kiszámításához használja GetMaxCharCounta következőt: . A GetCharCount metódus általában kevesebb memória lefoglalását teszi lehetővé, míg a GetMaxCharCount metódus általában gyorsabban fut.

Az átalakítandó adatok, például a streamből beolvasott adatok csak szekvenciális blokkokban érhetők el. Ebben az esetben, vagy ha az adatok mennyisége olyan nagy, hogy kisebb blokkokra kell osztani, akkor a Decoder metódus vagy Encoder a GetEncoder metódus által GetDecoder megadott vagy megadott értéket kell használnia.

ASCIIEncoding nem biztosít hibaészlelést. A hexadecimálisnál 0x7F nagyobb bájtok Unicode kérdőjelként vannak dekódolva ("?").

Figyelmeztetés

Biztonsági okokból érdemes használni UTF8Encoding, UnicodeEncodingvagy UTF32Encoding engedélyezni a hibaészlelést.

A következőre érvényes:

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

Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs

Fontos

Ez az API nem CLS-kompatibilis.

CLS-kompatibilis alternatíva
System.Text.ASCIIEncoding.GetChars(Byte[], Int32, Int32, Char[], Int32)

A megadott bájtmutatótól kezdve a bájtok sorozatát a megadott karaktermutatótól kezdődően tárolt karakterkészletté dekódolja.

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

Paraméterek

bytes
Byte*

A dekódolni kívánt első bájtra mutató mutató.

byteCount
Int32

A dekódolni kívánt bájtok száma.

chars
Char*

Az eredményként kapott karakterkészlet írásának megkezdéséhez mutató mutató.

charCount
Int32

Az írandó karakterek maximális száma.

Válaszok

A megadott helyen charsírt karakterek tényleges száma.

Attribútumok

Kivételek

bytes az null.

-vagy-

chars az null.

byteCount vagy charCount kisebb, mint nulla.

charCount kisebb, mint az eredményként kapott karakterek száma.

Hiba történt (további információ: Acharacter kódolása a .NET)

-és-

DecoderFallback DecoderExceptionFallbackértékre van állítva.

Megjegyzések

Az eredményként kapott karakterek tárolásához szükséges GetChars pontos tömbméret kiszámításához az alkalmazás a következőt használja GetCharCount: . A maximális tömbméret kiszámításához az alkalmazásnak a következőt kell használnia GetMaxCharCount: . A GetCharCount metódus általában kevesebb memória lefoglalását teszi lehetővé, míg a GetMaxCharCount metódus általában gyorsabban fut.

Az átalakítandó adatok, például a streamből beolvasott adatok csak szekvenciális blokkokban érhetők el. Ebben az esetben, vagy ha az adatok mennyisége olyan nagy, hogy kisebb blokkokra kell osztani, az alkalmazásnak a Decoder metódus vagy Encoder a GetDecoder metódus által GetEncoder megadott vagy megadott adatokat kell használnia.

ASCIIEncoding nem biztosít hibaészlelést. A hexadecimális 0x7F nagyobb bájtok Unicode kérdőjelként vannak dekódolva ("?").

Figyelmeztetés

Biztonsági okokból javasoljuk, hogy az alkalmazást használja UTF8Encoding, UnicodeEncodingvagy UTF32Encoding engedélyezze a hibaészlelést.

Lásd még

A következőre érvényes:

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

Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs
Forrás:
ASCIIEncoding.cs

Bájtok sorozatát dekódolja a megadott bájttömbből a megadott karaktertömbbe.

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

Paraméterek

bytes
Byte[]

A dekódolni kívánt bájtok sorozatát tartalmazó bájttömb.

byteIndex
Int32

A dekódolni kívánt első bájt indexe.

byteCount
Int32

A dekódolni kívánt bájtok száma.

chars
Char[]

Az eredményként kapott karakterkészletet tartalmazó karaktertömb.

charIndex
Int32

Az index, amelynél elkezdi írni az eredményként kapott karakterkészletet.

Válaszok

A beírt charskarakterek tényleges száma.

Kivételek

bytes az null.

-vagy-

chars az null.

byteIndex vagy byteCountcharIndex kisebb, mint nulla.

-vagy-

byteIndex és byteCount ne jelölje az érvényes tartományt a következőben bytes: .

-vagy-

charIndex érvénytelen index a következőben chars: .

chars nem rendelkezik elegendő kapacitással a tömb végétől charIndex a kapott karakterek elhelyezéséhez.

Hiba történt (további információ: Acharacter kódolása a .NET)

-és-

DecoderFallback DecoderExceptionFallbackértékre van állítva.

Példák

Az alábbi példa bemutatja, hogyan dekódolhat egy bájttömb elemeinek tartományát, és hogyan tárolhatja az eredményt egy Unicode-karaktertömbben lévő elemek készletében.

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

Megjegyzések

Az eredményként kapott karakterek tárolásához szükséges GetChars pontos tömbméret kiszámításához az alkalmazás a következőt használja GetCharCount: . A maximális tömbméret kiszámításához az alkalmazásnak a következőt kell használnia GetMaxCharCount: . A GetCharCount metódus általában kevesebb memória lefoglalását teszi lehetővé, míg a GetMaxCharCount metódus általában gyorsabban fut.

Az átalakítandó adatok, például a streamből beolvasott adatok csak szekvenciális blokkokban érhetők el. Ebben az esetben, vagy ha az adatok mennyisége olyan nagy, hogy kisebb blokkokra kell osztani, az alkalmazásnak a Decoder metódus vagy Encoder a GetDecoder metódus által GetEncoder megadott vagy megadott adatokat kell használnia.

ASCIIEncoding nem biztosít hibaészlelést. A hexadecimális 0x7F nagyobb bájtok Unicode kérdőjelként vannak dekódolva ("?").

Figyelmeztetés

Biztonsági okokból javasoljuk, hogy az alkalmazást használja UTF8Encoding, UnicodeEncodingvagy UTF32Encoding engedélyezze a hibaészlelést.

Lásd még

A következőre érvényes: