ASCIIEncoding.GetChars Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Decodeert een reeks bytes in een reeks tekens.
Overloads
| Name | Description |
|---|---|
| GetChars(Byte*, Int32, Char*, Int32) |
Decodeert een reeks bytes die beginnen bij de opgegeven byteaanwijzer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
Decodeert een reeks bytes van de opgegeven bytematrix in de opgegeven tekenmatrix. |
GetChars(Byte*, Int32, Char*, Int32)
Belangrijk
Deze API is niet CLS-conform.
- CLS-conform alternatief
- System.Text.ASCIIEncoding.GetChars(Byte[], Int32, Int32, Char[], Int32)
Decodeert een reeks bytes die beginnen bij de opgegeven byteaanwijzer in een set tekens die zijn opgeslagen vanaf de opgegeven tekenaanwijzer.
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
Parameters
- bytes
- Byte*
Een aanwijzer naar de eerste byte om te decoderen.
- byteCount
- Int32
Het aantal bytes dat moet worden gedecodeerd.
- chars
- Char*
Een aanwijzer naar de locatie waar de resulterende set tekens moet worden geschreven.
- charCount
- Int32
Het maximum aantal tekens dat moet worden geschreven.
Retouren
Het werkelijke aantal tekens dat is geschreven op de locatie aangegeven door chars.
- Kenmerken
Uitzonderingen
byteCount of charCount kleiner is dan nul.
charCount is kleiner dan het resulterende aantal tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
DecoderFallback is ingesteld op DecoderExceptionFallback.
Opmerkingen
Voor het berekenen van de exacte matrixgrootte die is vereist voor GetChars het opslaan van de resulterende tekens, gebruikt GetCharCountde toepassing . Als u de maximale matrixgrootte wilt berekenen, moet de toepassing gebruikmaken van GetMaxCharCount. Met de GetCharCount methode kan over het algemeen minder geheugen worden toegewezen, terwijl de GetMaxCharCount methode doorgaans sneller wordt uitgevoerd.
Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stream worden gelezen, kunnen alleen in opeenvolgende blokken beschikbaar zijn. In dit geval, of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet de toepassing respectievelijk de Decoder door de GetDecoder methode of de methode opgegeven methode Encoder of de GetEncoder methode gebruiken.
ASCIIEncoding biedt geen foutdetectie. Elke byte groter dan hexadecimale 0x7F wordt gedecodeerd als het Unicode-vraagteken ('?').
Caution
Om veiligheidsredenen wordt uw toepassing aanbevolen om foutdetectie te gebruiken UTF8Encoding, UnicodeEncodingof UTF32Encoding in te schakelen.
Zie ook
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)
Van toepassing op
GetChars(Byte[], Int32, Int32, Char[], Int32)
Decodeert een reeks bytes van de opgegeven bytematrix in de opgegeven tekenmatrix.
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
Parameters
- bytes
- Byte[]
De bytematrix met de reeks bytes die moet worden gedecodeerd.
- byteIndex
- Int32
De index van de eerste byte om te decoderen.
- byteCount
- Int32
Het aantal bytes dat moet worden gedecodeerd.
- chars
- Char[]
De tekenmatrix die de resulterende set tekens bevat.
- charIndex
- Int32
De index waarop de resulterende set tekens moet worden geschreven.
Retouren
Het werkelijke aantal tekens dat is geschreven in chars.
Uitzonderingen
byteIndex of byteCountcharIndex kleiner is dan nul.
– of –
byteIndex en byteCount geef geen geldig bereik aan in bytes.
– of –
charIndex is geen geldige index in chars.
chars heeft niet voldoende capaciteit van charIndex tot het einde van de matrix voor de resulterende tekens.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
DecoderFallback is ingesteld op DecoderExceptionFallback.
Voorbeelden
In het volgende voorbeeld ziet u hoe u een bereik van elementen uit een bytematrix decoderen en het resultaat opslaat in een set elementen in een Unicode-tekenmatrix.
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
Opmerkingen
Voor het berekenen van de exacte matrixgrootte die is vereist voor GetChars het opslaan van de resulterende tekens, gebruikt GetCharCountde toepassing . Als u de maximale matrixgrootte wilt berekenen, moet de toepassing gebruikmaken van GetMaxCharCount. Met de GetCharCount methode kan over het algemeen minder geheugen worden toegewezen, terwijl de GetMaxCharCount methode doorgaans sneller wordt uitgevoerd.
Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stream worden gelezen, kunnen alleen in opeenvolgende blokken beschikbaar zijn. In dit geval, of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, moet de toepassing respectievelijk de Decoder door de GetDecoder methode of de methode opgegeven methode Encoder of de GetEncoder methode gebruiken.
ASCIIEncoding biedt geen foutdetectie. Elke byte groter dan hexadecimale 0x7F wordt gedecodeerd als het Unicode-vraagteken ('?').
Caution
Om veiligheidsredenen wordt uw toepassing aanbevolen om foutdetectie te gebruiken UTF8Encoding, UnicodeEncodingof UTF32Encoding in te schakelen.
Zie ook
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)