ASCIIEncoding.GetBytes Methode

Definitie

Codeert een reeks tekens in een reeks bytes.

Overloads

Name Description
GetBytes(Char*, Int32, Byte*, Int32)

Codeert een reeks tekens die beginnen bij de opgegeven tekenwijzer in een reeks bytes die zijn opgeslagen vanaf de opgegeven byte-aanwijzer.

GetBytes(Char[], Int32, Int32, Byte[], Int32)

Codeert een set tekens van de opgegeven tekenmatrix in de opgegeven bytematrix.

GetBytes(String, Int32, Int32, Byte[], Int32)

Codeert een set tekens van de opgegeven in de opgegeven String bytematrix.

GetBytes(Char*, Int32, Byte*, Int32)

Belangrijk

Deze API is niet CLS-conform.

CLS-conform alternatief
System.Text.ASCIIEncoding.GetBytes(Char[], Int32, Int32, Byte[], Int32)

Codeert een reeks tekens die beginnen bij de opgegeven tekenwijzer in een reeks bytes die zijn opgeslagen vanaf de opgegeven byte-aanwijzer.

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

Retouren

Het werkelijke aantal bytes dat is geschreven op de locatie aangegeven door bytes.

Kenmerken

Uitzonderingen

chars is null.

– of –

bytes is null.

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

EncoderFallback is ingesteld op EncoderExceptionFallback.

Opmerkingen

Voor het berekenen van de exacte matrixgrootte die is vereist voor GetBytes het opslaan van de resulterende bytes, gebruikt GetByteCountde toepassing . Als u de maximale matrixgrootte wilt berekenen, moet de toepassing gebruikmaken van GetMaxByteCount. Met de GetByteCount methode kan over het algemeen minder geheugen worden toegewezen, terwijl de GetMaxByteCount 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. Elk Unicode-teken dat groter is dan U+007F, wordt omgezet in een ASCII-vraagteken ('?').

Caution

Om veiligheidsredenen wordt uw toepassing aanbevolen om foutdetectie te gebruiken UTF8Encoding, UnicodeEncodingof UTF32Encoding in te schakelen.

Zie ook

Van toepassing op

GetBytes(Char[], Int32, Int32, Byte[], Int32)

Codeert een set tekens van de opgegeven tekenmatrix in de opgegeven bytematrix.

public:
 override int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : char[] * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) 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.

Retouren

Het werkelijke aantal bytes dat is geschreven in bytes.

Uitzonderingen

chars is null.

– of –

bytes is null.

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

EncoderFallback is ingesteld op EncoderExceptionFallback.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de GetBytes methode gebruikt om een reeks tekens uit een tekenreeks te coderen en de gecodeerde tekens op te slaan in een bereik van elementen in een bytematrix.

using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "ASCII Encoding Example";
        
        ASCIIEncoding ascii = new ASCIIEncoding();
        
        int byteCount = ascii.GetByteCount(chars.ToCharArray(), 6, 8);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = ascii.GetBytes(chars, 6, 8, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode string.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text

Class ASCIIEncodingExample
   
    Public Shared Sub Main()
        Dim bytes() As Byte
        Dim chars As String = "ASCII Encoding Example"

        Dim ascii As New ASCIIEncoding()

        Dim byteCount As Integer = ascii.GetByteCount(chars.ToCharArray(), 6, 8)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = ascii.GetBytes(chars, 6, 8, bytes, 0)

        Console.WriteLine("{0} bytes used to encode string.", 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

Opmerkingen

Voor het berekenen van de exacte matrixgrootte die is vereist voor GetBytes het opslaan van de resulterende bytes, gebruikt GetByteCountde toepassing . Als u de maximale matrixgrootte wilt berekenen, moet de toepassing gebruikmaken van GetMaxByteCount. Met de GetByteCount methode kan over het algemeen minder geheugen worden toegewezen, terwijl de GetMaxByteCount 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. Elk Unicode-teken dat groter is dan U+007F, wordt gecodeerd als het ASCII-vraagteken ('?').

Caution

Om veiligheidsredenen wordt uw toepassing aanbevolen om foutdetectie te gebruiken UTF8Encoding, UnicodeEncodingof UTF32Encoding in te schakelen.

Zie ook

Van toepassing op

GetBytes(String, Int32, Int32, Byte[], Int32)

Codeert een set tekens van de opgegeven in de opgegeven String bytematrix.

public:
 override int GetBytes(System::String ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(string chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

Parameters

chars
String

De set tekens 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.

Retouren

Het werkelijke aantal bytes dat is geschreven in bytes.

Uitzonderingen

chars of bytes is null.

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

EncoderFallback is ingesteld op EncoderExceptionFallback.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de GetBytes methode gebruikt om een bereik van elementen van een Unicode-tekenmatrix te coderen en de gecodeerde bytes op te slaan in een bereik van elementen in een bytematrix.

using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        ASCIIEncoding ascii = new ASCIIEncoding();
        
        int byteCount = ascii.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = ascii.GetBytes(chars, 1, 2, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class ASCIIEncodingExample
    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 ascii As New ASCIIEncoding()

        Dim byteCount As Integer = ascii.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1){}
        Dim bytesEncodedCount As Integer = ascii.GetBytes(chars, 1, 2, bytes, 0)

        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

Opmerkingen

Voor het berekenen van de exacte matrixgrootte die is vereist voor GetBytes het opslaan van de resulterende bytes, gebruikt GetByteCountde toepassing . Als u de maximale matrixgrootte wilt berekenen, moet de toepassing gebruikmaken van GetMaxByteCount. Met de GetByteCount methode kan over het algemeen minder geheugen worden toegewezen, terwijl de GetMaxByteCount 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. Elk Unicode-teken dat groter is dan U+007F, wordt gecodeerd als het ASCII-vraagteken ('?').

Caution

Om veiligheidsredenen is het raadzaam om foutdetectie te gebruiken UTF8Encodingof UnicodeEncodingUTF32Encoding in te schakelen.

Zie ook

Van toepassing op