Encoder.GetBytes 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.
Wanneer deze wordt overschreven in een afgeleide klasse, codeert u een reeks tekens in een reeks bytes.
Overloads
| Name | Description |
|---|---|
| GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean) |
Wanneer deze wordt overschreven in een afgeleide klasse, codeert u een set tekens in de invoertekens en alle tekens in de interne buffer in een reeks bytes die zijn opgeslagen in het bereik van de invoerbyte. Een parameter geeft aan of de interne status van de encoder na de conversie moet worden gewist. |
| GetBytes(Char*, Int32, Byte*, Int32, Boolean) |
Wanneer deze wordt overschreven in een afgeleide klasse, codeert u een set tekens die beginnen bij de opgegeven tekenwijzer en alle tekens in de interne buffer in een reeks bytes die worden opgeslagen vanaf de opgegeven bytepointer. Een parameter geeft aan of de interne status van de encoder na de conversie moet worden gewist. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean) |
Wanneer deze wordt overschreven in een afgeleide klasse, codeert u een set tekens uit de opgegeven tekenmatrix en alle tekens in de interne buffer in de opgegeven bytematrix. Een parameter geeft aan of de interne status van de encoder na de conversie moet worden gewist. |
Opmerkingen
Houd er rekening mee dat het object de Encoder status opslaat tussen aanroepen naar GetBytes. Wanneer de toepassing wordt uitgevoerd met een gegevensstroom, moet deze de flush parameter true instellen op in de laatste aanroep om ervoor te GetBytes zorgen dat de statusinformatie wordt leeggemaakt en dat de gecodeerde bytes correct worden beëindigd. Met deze instelling negeert de encoder ongeldige bytes aan het einde van het gegevensblok, zoals niet-overeenkomende surrogaten of onvolledige combinaties, en wist de interne buffer.
Als u de exacte buffergrootte wilt berekenen die GetBytes nodig is om de resulterende tekens op te slaan, moet de toepassing worden gebruikt GetByteCount.
Als GetBytes wordt aangeroepen met flush ingesteld op false, slaat de encoder volgbytes op aan het einde van het gegevensblok in een interne buffer en gebruikt deze in de volgende coderingsbewerking. De toepassing moet onmiddellijk een blok met gegevens aanroepen GetByteCount voordat u hetzelfde blok aanroept GetBytes , zodat eventuele volgtekens uit het vorige blok worden opgenomen in de berekening.
Als uw toepassing veel segmenten van een invoerstroom wilt converteren, kunt u overwegen de Convert methode te gebruiken. GetBytes genereert een uitzondering als de uitvoerbuffer niet groot genoeg is, maar Convert zo veel mogelijk ruimte vult en de tekens lezen en bytes retourneren die zijn geschreven. Zie ook het Encoding.GetBytes onderwerp voor meer opmerkingen.
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)
Wanneer deze wordt overschreven in een afgeleide klasse, codeert u een set tekens in de invoertekens en alle tekens in de interne buffer in een reeks bytes die zijn opgeslagen in het bereik van de invoerbyte. Een parameter geeft aan of de interne status van de encoder na de conversie moet worden gewist.
public:
virtual int GetBytes(ReadOnlySpan<char> chars, Span<System::Byte> bytes, bool flush);
public virtual int GetBytes(ReadOnlySpan<char> chars, Span<byte> bytes, bool flush);
abstract member GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
override this.GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
Public Overridable Function GetBytes (chars As ReadOnlySpan(Of Char), bytes As Span(Of Byte), flush As Boolean) As Integer
Parameters
- chars
- ReadOnlySpan<Char>
Een tekenspanne om te coderen.
- flush
- Boolean
true om de interne status van de encoder na de conversie te wissen; anders, false.
Retouren
Het werkelijke aantal bytes dat is geschreven op de locatie die wordt aangegeven door de bytes parameter.
Van toepassing op
GetBytes(Char*, Int32, Byte*, Int32, Boolean)
Belangrijk
Deze API is niet CLS-conform.
Wanneer deze wordt overschreven in een afgeleide klasse, codeert u een set tekens die beginnen bij de opgegeven tekenwijzer en alle tekens in de interne buffer in een reeks bytes die worden opgeslagen vanaf de opgegeven bytepointer. Een parameter geeft aan of de interne status van de encoder na de conversie moet worden gewist.
public:
virtual int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
public virtual int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
Parameters
- chars
- Char*
Een aanwijzer naar het eerste teken om te coderen.
- charCount
- Int32
Het aantal tekens dat moet worden gecodeerd.
- bytes
- Byte*
Een aanwijzer naar de locatie waar de resulterende reeks bytes moet worden geschreven.
- byteCount
- Int32
Het maximum aantal bytes dat moet worden geschreven.
- flush
- Boolean
true om de interne status van de encoder na de conversie te wissen; anders, false.
Retouren
Het werkelijke aantal bytes dat is geschreven op de locatie die wordt aangegeven door de bytes parameter.
- Kenmerken
Uitzonderingen
charCount of byteCount kleiner is dan nul.
byteCount is kleiner dan het resulterende aantal bytes.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
Fallback is ingesteld op EncoderExceptionFallback.
Van toepassing op
GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean)
Wanneer deze wordt overschreven in een afgeleide klasse, codeert u een set tekens uit de opgegeven tekenmatrix en alle tekens in de interne buffer in de opgegeven bytematrix. Een parameter geeft aan of de interne status van de encoder na de conversie moet worden gewist.
public:
abstract int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex, bool flush);
public abstract int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush);
abstract member GetBytes : char[] * int * int * byte[] * int * bool -> int
Public MustOverride Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer, flush As Boolean) As Integer
Parameters
- chars
- Char[]
De tekenmatrix die de set tekens bevat die moeten worden gecodeerd.
- charIndex
- Int32
De index van het eerste teken om te coderen.
- charCount
- Int32
Het aantal tekens dat moet worden gecodeerd.
- bytes
- Byte[]
De bytematrix die de resulterende reeks bytes bevat.
- byteIndex
- Int32
De index waarop de resulterende reeks bytes moet worden geschreven.
- flush
- Boolean
true om de interne status van de encoder na de conversie te wissen; anders, false.
Retouren
Het werkelijke aantal bytes dat is geschreven in bytes.
Uitzonderingen
charIndex of charCountbyteIndex kleiner is dan nul.
– of –
charIndex en charCount geef geen geldig bereik aan in chars.
– of –
byteIndex is geen geldige index in bytes.
bytes heeft niet voldoende capaciteit van byteIndex tot het einde van de matrix voor de resulterende bytes.
Er is een terugval opgetreden (zie Character Encoding in .NET)
en
Fallback is ingesteld op EncoderExceptionFallback.
Voorbeelden
In het volgende voorbeeld ziet u hoe u een bereik van elementen uit een tekenmatrix codeert en de gecodeerde bytes opslaat in een bereik van elementen in een bytematrix. De GetByteCount methode wordt gebruikt om de grootte van de matrix te bepalen die is vereist voor GetBytes.
using System;
using System.Text;
class EncoderExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
Encoder uniEncoder = Encoding.Unicode.GetEncoder();
int byteCount = uniEncoder.GetByteCount(chars, 0, chars.Length, true);
bytes = new Byte[byteCount];
int bytesEncodedCount = uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, true);
Console.WriteLine(
"{0} bytes used to encode characters.", bytesEncodedCount
);
Console.Write("Encoded bytes: ");
foreach (Byte b in bytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
}
}
/* This code example produces the following output.
8 bytes used to encode characters.
Encoded bytes: [35][0][37][0][160][3][163][3]
*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class EncoderExample
Public Shared Sub Main()
Dim bytes() As Byte
' Unicode characters.
' ChrW(35) = #
' ChrW(37) = %
' ChrW(928) = Pi
' ChrW(931) = Sigma
Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}
Dim uniEncoder As Encoder = Encoding.Unicode.GetEncoder()
Dim byteCount As Integer = _
uniEncoder.GetByteCount(chars, 0, chars.Length, True)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = _
uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, True)
Console.WriteLine( _
"{0} bytes used to encode characters.", _
bytesEncodedCount _
)
Console.Write("Encoded bytes: ")
Dim b As Byte
For Each b In bytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
End Sub
End Class
'This code example produces the following output.
'8 bytes used to encode characters.
'Encoded bytes: [35][0][37][0][160][3][163][3]
'