UTF8Encoding.GetChars Metod

Definition

Avkodar en sekvens med byte till en uppsättning tecken.

Överlagringar

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

Avkodar en sekvens med byte som börjar vid den angivna bytepekaren till en uppsättning tecken som lagras från och med den angivna teckenpekaren.

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

Avkodar en sekvens med byte från den angivna bytematrisen till den angivna teckenmatrisen.

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

Viktigt!

Detta API uppfyller inte CLS.

Avkodar en sekvens med byte som börjar vid den angivna bytepekaren till en uppsättning tecken som lagras från och med den angivna teckenpekaren.

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)]
[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)]
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)>]
[<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
[<System.CLSCompliant(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int

Parametrar

bytes
Byte*

En pekare till den första byte som ska avkodas.

byteCount
Int32

Antalet byte som ska avkodas.

chars
Char*

En pekare till den plats där du ska börja skriva den resulterande uppsättningen tecken.

charCount
Int32

Det maximala antalet tecken som ska skrivas.

Returer

Det faktiska antalet tecken som skrivits på den plats som anges av chars.

Attribut

Undantag

bytes är null.

-eller-

chars är null.

byteCount eller charCount är mindre än noll.

Felidentifiering är aktiverat och bytes innehåller en ogiltig sekvens med byte.

-eller-

charCount är mindre än det resulterande antalet tecken.

En reserv inträffade (mer information finns i Character Encoding i .NET)

-och-

DecoderFallback är inställt på DecoderExceptionFallback.

Kommentarer

Om du vill beräkna den exakta matrisstorlek som krävs för GetChars att lagra de resulterande tecknen anropar GetCharCount du metoden. Anropa metoden för att beräkna den maximala matrisstorleken GetMaxCharCount . Metoden GetCharCount allokerar vanligtvis mindre minne, medan GetMaxCharCount metoden vanligtvis körs snabbare.

Med felidentifiering leder en ogiltig sekvens till att den här metoden utlöser ett ArgumentException undantag. Utan felidentifiering ignoreras ogiltiga sekvenser och inget undantag utlöses.

Om byteintervallet som ska avkodas innehåller byteordningsmarkeringen (BOM) och bytematrisen returnerades av en metod av en icke-BOM-medveten typ inkluderas tecknet U+FFFE i teckenmatrisen som returneras av den här metoden. Du kan ta bort den genom att String.TrimStart anropa metoden.

Data som ska konverteras, till exempel data som lästs från en dataström, kan endast vara tillgängliga i sekventiella block. I det här fallet, eller om mängden data är så stor att den måste delas upp i mindre block, använder Decoder du eller - Encoder objektet som tillhandahålls av GetDecoder metoden eller GetEncoder metoden.

Se även

Gäller för

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

Avkodar en sekvens med byte från den angivna bytematrisen till den angivna teckenmatrisen.

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

Parametrar

bytes
Byte[]

Bytematrisen som innehåller sekvensen med byte som ska avkodas.

byteIndex
Int32

Indexet för den första byte som ska avkodas.

byteCount
Int32

Antalet byte som ska avkodas.

chars
Char[]

Teckenmatrisen som ska innehålla den resulterande uppsättningen tecken.

charIndex
Int32

Indexet där du ska börja skriva den resulterande uppsättningen tecken.

Returer

Det faktiska antalet tecken som skrivits till chars.

Undantag

bytes är null.

-eller-

chars är null.

byteIndex eller byteCountcharIndex är mindre än noll.

-eller-

byteIndex och byteCount ange inte ett giltigt intervall i bytes.

-eller-

charIndex är inte ett giltigt index i chars.

Felidentifiering är aktiverat och bytes innehåller en ogiltig sekvens med byte.

-eller-

chars har inte tillräckligt med kapacitet från charIndex till slutet av matrisen för att rymma de resulterande tecknen.

En reserv inträffade (mer information finns i Character Encoding i .NET)

-och-

DecoderFallback är inställt på DecoderExceptionFallback.

Exempel

I följande exempel används GetChars metoden för att avkoda ett område med element i en bytematris och lagra resultatet i en teckenmatris.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
             85,  84,  70,  56,  32,  69, 110,
             99, 111, 100, 105, 110, 103,  32,
             69, 120,  97, 109, 112, 108, 101
        };

        UTF8Encoding utf8 = new UTF8Encoding();

        int charCount = utf8.GetCharCount(bytes, 2, 13);
        chars = new Char[charCount];
        int charsDecodedCount = utf8.GetChars(bytes, 2, 13, 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 UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
            85,  84,  70,  56,  32,  69, 110, _
            99, 111, 100, 105, 110, 103,  32, _
            69, 120,  97, 109, 112, 108, 101 _
        }
        
        Dim utf8 As New UTF8Encoding()
        
        Dim charCount As Integer = utf8.GetCharCount(bytes, 2, 13)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = utf8.GetChars(bytes, 2, 13, 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

Kommentarer

Om du vill beräkna den exakta matrisstorlek som krävs för GetChars att lagra de resulterande tecknen anropar GetCharCount du metoden. Anropa metoden för att beräkna den maximala matrisstorleken GetMaxCharCount . Metoden GetCharCount allokerar vanligtvis mindre minne, medan GetMaxCharCount metoden vanligtvis körs snabbare.

Med felidentifiering leder en ogiltig sekvens till att den här metoden utlöser ett ArgumentException undantag. Utan felidentifiering ignoreras ogiltiga sekvenser och inget undantag utlöses.

Om byteintervallet som ska avkodas innehåller byteordningsmarkeringen (BOM) och bytematrisen returnerades av en metod av en icke-BOM-medveten typ inkluderas tecknet U+FFFE i teckenmatrisen som returneras av den här metoden. Du kan ta bort den genom att String.TrimStart anropa metoden.

Data som ska konverteras, till exempel data som lästs från en dataström, kan endast vara tillgängliga i sekventiella block. I det här fallet, eller om mängden data är så stor att den måste delas upp i mindre block, använder Decoder du eller Encoder som tillhandahålls av GetDecoder metoden eller GetEncoder metoden.

Se även

Gäller för