UnicodeEncoding.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.Runtime.InteropServices.ComVisible(false)]
public override int GetChars(byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(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)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(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

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 parametern chars .

Attribut

Undantag

bytes är null (Nothing).

-eller-

chars är null (Nothing).

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

För att beräkna den exakta matrisstorlek som GetChars krävs för att lagra de resulterande tecknen använder GetCharCountprogrammet . För att beräkna den maximala matrisstorleken bör programmet använda GetMaxCharCount. Metoden GetCharCount allokerar vanligtvis mindre minne, medan GetMaxCharCount metoden vanligtvis körs snabbare.

Med felidentifiering orsakar en ogiltig sekvens att den här metoden genererar en ArgumentException. 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, bör programmet använda Decoder eller - Encoder objektet som tillhandahålls av GetDecoder metoden eller GetEncoder .

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 (Nothing).

-eller-

chars är null (Nothing).

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 visas hur du använder 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 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
        };

        UnicodeEncoding Unicode = new UnicodeEncoding();

        int charCount = Unicode.GetCharCount(bytes, 2, 8);
        chars = new Char[charCount];
        int charsDecodedCount = Unicode.GetChars(bytes, 2, 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 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 uni As New UnicodeEncoding()
        
        Dim charCount As Integer = uni.GetCharCount(bytes, 2, 8)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = uni.GetChars(bytes, 2, 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

Kommentarer

För att beräkna den exakta matrisstorlek som krävs för GetChars att lagra de resulterande tecknen använder GetCharCountprogrammet . För att beräkna den maximala matrisstorleken bör programmet använda GetMaxCharCount. Metoden GetCharCount allokerar vanligtvis mindre minne, medan GetMaxCharCount metoden vanligtvis körs snabbare.

Med felidentifiering orsakar en ogiltig sekvens att den här metoden genererar en ArgumentException. 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, bör programmet använda Decoder eller som Encoder tillhandahålls av GetDecoder metoden eller GetEncoder metoden.

Se även

Gäller för