Decoder.GetChars Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När den åsidosättas i en härledd klass avkodar en sekvens med byte till en uppsättning tecken.
Överlagringar
| Name | Description |
|---|---|
| GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean) |
När den åsidosätts i en härledd klass avkodas en sekvens med intervallbyte och eventuella byte i den interna bufferten till en uppsättning tecken som lagras från och med den angivna teckenpekaren. En parameter anger om avkodarens interna tillstånd ska rensas efter konverteringen. |
| GetChars(Byte*, Int32, Char*, Int32, Boolean) |
När de åsidosätts i en härledd klass avkodar en sekvens med byte som börjar vid den angivna bytepekaren och eventuella byte i den interna bufferten till en uppsättning tecken som lagras från och med den angivna teckenpekaren. En parameter anger om avkodarens interna tillstånd ska rensas efter konverteringen. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
När det åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen och eventuella byte i den interna bufferten till den angivna teckenmatrisen. |
| GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean) |
När det åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen och eventuella byte i den interna bufferten till den angivna teckenmatrisen. En parameter anger om avkodarens interna tillstånd ska rensas efter konverteringen. |
GetChars(ReadOnlySpan<Byte>, Span<Char>, Boolean)
När den åsidosätts i en härledd klass avkodas en sekvens med intervallbyte och eventuella byte i den interna bufferten till en uppsättning tecken som lagras från och med den angivna teckenpekaren. En parameter anger om avkodarens interna tillstånd ska rensas efter konverteringen.
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
Parametrar
- bytes
- ReadOnlySpan<Byte>
Ett byteintervall som ska avkodas.
- flush
- Boolean
trueför att rensa avkodarens interna tillstånd efter konverteringen. annars . false
Returer
Det faktiska antalet tecken som skrivits inom det intervall som anges av parametern chars .
Kommentarer
Kom ihåg att objektet Decoder sparar tillstånd mellan anrop till GetChars. När programmet är klart med en dataström bör den ange parametern flush till true för att se till att tillståndsinformationen rensas. Med den här inställningen ignorerar avkodaren ogiltiga byte i slutet av datablocket och rensar den interna bufferten.
För att beräkna den exakta intervallstorlek som GetChars krävs för att lagra de resulterande tecknen bör programmet använda GetCharCount.
Om GetChars anropas med flush inställt på falselagrar avkodaren efterföljande byte i slutet av datablocket i en intern buffert och använder dem i nästa avkodningsåtgärd. Programmet bör anropa GetCharCount ett datablock omedelbart innan det anropas GetChars i samma block, så att eventuella efterföljande byte från föregående block inkluderas i beräkningen.
Om ditt program ska konvertera många segment av en indataström bör du överväga att använda Convert metoden. GetChars genererar ett undantag om utdataintervallet inte är tillräckligt stort, men Convert fyller så mycket utrymme som möjligt och returnerar byteläsningen och tecken som skrivits, förutsatt att utdatamatrisen tillåter minst två tecken. Se även avsnittet Encoding.GetChars för fler kommentarer.
Gäller för
GetChars(Byte*, Int32, Char*, Int32, Boolean)
Viktigt!
Detta API uppfyller inte CLS.
När de åsidosätts i en härledd klass avkodar en sekvens med byte som börjar vid den angivna bytepekaren och eventuella byte i den interna bufferten till en uppsättning tecken som lagras från och med den angivna teckenpekaren. En parameter anger om avkodarens interna tillstånd ska rensas efter konverteringen.
public:
virtual int GetChars(System::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)]
public virtual int GetChars(byte* bytes, int byteCount, char* chars, int charCount, bool flush);
[<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
[<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
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.
- flush
- Boolean
trueför att rensa avkodarens interna tillstånd efter konverteringen. annars . false
Returer
Det faktiska antalet tecken som skrivits på den plats som anges av parametern chars .
- Attribut
Undantag
byteCount eller charCount är mindre än noll.
charCount är mindre än det resulterande antalet tecken.
En reserv inträffade (mer information finns i Character Encoding i .NET)
-och-
Fallback är inställt på DecoderExceptionFallback.
Kommentarer
Kom ihåg att objektet Decoder sparar tillstånd mellan anrop till GetChars. När programmet är klart med en dataström bör den ange parametern flush till true för att se till att tillståndsinformationen rensas. Med den här inställningen ignorerar avkodaren ogiltiga byte i slutet av datablocket och rensar den interna bufferten.
För att beräkna den exakta buffertstorlek som GetChars krävs för att lagra de resulterande tecknen bör programmet använda GetCharCount.
Om GetChars anropas med flush inställt på falselagrar avkodaren efterföljande byte i slutet av datablocket i en intern buffert och använder dem i nästa avkodningsåtgärd. Programmet bör anropa GetCharCount ett datablock omedelbart innan det anropas GetChars i samma block, så att eventuella efterföljande byte från föregående block inkluderas i beräkningen.
Om ditt program ska konvertera många segment av en indataström bör du överväga att använda Convert metoden. GetChars genererar ett undantag om utdatabufferten inte är tillräckligt stor, men Convert fyller så mycket utrymme som möjligt och returnerar byteläsning och tecken som skrivits, förutsatt att utdatamatrisen tillåter minst två tecken. Se även avsnittet Encoding.GetChars för fler kommentarer.
Se även
Gäller för
GetChars(Byte[], Int32, Int32, Char[], Int32)
När det åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen och eventuella byte i den interna bufferten till den angivna teckenmatrisen.
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
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
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.
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-
Fallback är inställt på DecoderExceptionFallback.
Exempel
I följande exempel visas hur du avkodar ett intervall med element från en bytematris och lagrar dem i en Unicode-teckenmatris. Metoden GetCharCount används för att beräkna antalet tecken som behövs för att lagra de avkodade elementen i matrisen bytes. Metoden GetChars avkodar de angivna elementen i bytematrisen och lagrar dem i den nya teckenmatrisen.
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]
'
Kommentarer
Kom ihåg att objektet Decoder sparar tillstånd mellan anrop till GetChars. När programmet är klart med en dataström bör den ange parametern flush till true för att se till att tillståndsinformationen rensas. Med den här inställningen ignorerar avkodaren ogiltiga byte i slutet av datablocket och rensar den interna bufferten.
Om du vill beräkna den exakta matrisstorlek som GetChars krävs för att lagra de resulterande tecknen bör programmet använda GetCharCount.
Om GetChars anropas med flush inställt på falselagrar avkodaren efterföljande byte i slutet av datablocket i en intern buffert och använder dem i nästa avkodningsåtgärd. Programmet bör anropa GetCharCount ett datablock omedelbart innan det anropas GetChars i samma block, så att eventuella efterföljande byte från föregående block inkluderas i beräkningen.
Om ditt program ska konvertera många segment av en indataström bör du överväga att använda Convert metoden. GetChars genererar ett undantag om utdatabufferten inte är tillräckligt stor, men Convert fyller så mycket utrymme som möjligt och returnerar byteläsning och tecken som skrivits, förutsatt att utdatamatrisen tillåter minst två tecken. Se även avsnittet Encoding.GetChars för fler kommentarer.
Se även
Gäller för
GetChars(Byte[], Int32, Int32, Char[], Int32, Boolean)
När det åsidosättas i en härledd klass avkodar en sekvens med byte från den angivna bytematrisen och eventuella byte i den interna bufferten till den angivna teckenmatrisen. En parameter anger om avkodarens interna tillstånd ska rensas efter konverteringen.
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
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.
- flush
- Boolean
trueför att rensa avkodarens interna tillstånd efter konverteringen. annars . false
Returer
Det faktiska antalet tecken som skrivits in i parametern chars .
Undantag
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.
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-
Fallback är inställt på DecoderExceptionFallback.
Kommentarer
Kom ihåg att objektet Decoder sparar tillstånd mellan anrop till GetChars. När programmet är klart med en dataström bör den ange parametern flush till true för att se till att tillståndsinformationen rensas. Med den här inställningen ignorerar avkodaren ogiltiga byte i slutet av datablocket och rensar den interna bufferten.
Om du vill beräkna den exakta matrisstorlek som GetChars krävs för att lagra de resulterande tecknen bör programmet använda GetCharCount.
Om GetChars anropas med flush inställt på falselagrar avkodaren efterföljande byte i slutet av datablocket i en intern buffert och använder dem i nästa avkodningsåtgärd. Programmet bör anropa GetCharCount ett datablock omedelbart innan det anropas GetChars i samma block, så att eventuella efterföljande byte från föregående block inkluderas i beräkningen.
Om ditt program ska konvertera många segment av en indataström bör du överväga att använda Convert metoden. GetChars genererar ett undantag om utdatabufferten inte är tillräckligt stor, men Convert fyller så mycket utrymme som möjligt och returnerar byteläsning och tecken som skrivits, förutsatt att utdatamatrisen tillåter minst två tecken. Se även avsnittet Encoding.GetChars för fler kommentarer.