UTF8Encoding.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.
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.
Foutdetectie is ingeschakeld en bytes bevat een ongeldige reeks bytes.
– of –
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
Als u de exacte matrixgrootte wilt berekenen die nodig is om GetChars de resulterende tekens op te slaan, roept u de GetCharCount methode aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxCharCount methode aan. De GetCharCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxCharCount methode over het algemeen sneller wordt uitgevoerd.
Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.
Als het bereik van bytes dat moet worden gedecodeerd, de bytevolgordemarkering (BOM) bevat en de bytematrix is geretourneerd door een methode van een niet-bombewust type, wordt het teken U+FFFE opgenomen in de tekenmatrix die door deze methode wordt geretourneerd. U kunt deze verwijderen door de String.TrimStart methode aan te roepen.
Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stroom worden gelezen, zijn mogelijk alleen in opeenvolgende blokken beschikbaar. In dit geval of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, gebruikt u respectievelijk het Decoder of het Encoder object dat wordt geleverd door de GetDecoder methode of de GetEncoder methode.
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.
Foutdetectie is ingeschakeld en bytes bevat een ongeldige reeks bytes.
– of –
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 wordt de GetChars methode gebruikt om een bereik van elementen in een bytematrix te decoderen en het resultaat op te slaan in een tekenmatrix.
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
Opmerkingen
Als u de exacte matrixgrootte wilt berekenen die nodig is om GetChars de resulterende tekens op te slaan, roept u de GetCharCount methode aan. Als u de maximale matrixgrootte wilt berekenen, roept u de GetMaxCharCount methode aan. De GetCharCount methode wijst doorgaans minder geheugen toe, terwijl de GetMaxCharCount methode over het algemeen sneller wordt uitgevoerd.
Bij foutdetectie zorgt een ongeldige reeks ervoor dat deze methode een ArgumentException uitzondering genereert. Zonder foutdetectie worden ongeldige reeksen genegeerd en wordt er geen uitzondering gegenereerd.
Als het bereik van bytes dat moet worden gedecodeerd, de bytevolgordemarkering (BOM) bevat en de bytematrix is geretourneerd door een methode van een niet-bombewust type, wordt het teken U+FFFE opgenomen in de tekenmatrix die door deze methode wordt geretourneerd. U kunt deze verwijderen door de String.TrimStart methode aan te roepen.
Gegevens die moeten worden geconverteerd, zoals gegevens die uit een stroom worden gelezen, zijn mogelijk alleen in opeenvolgende blokken beschikbaar. In dit geval of als de hoeveelheid gegevens zo groot is dat deze moet worden onderverdeeld in kleinere blokken, gebruikt u respectievelijk de DecoderGetDecoder of de Encoder opgegeven methode of de GetEncoder methode.
Zie ook
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)