Encoder.GetByteCount Methode

Definition

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Anzahl der Byte berechnet, die durch codieren einer Reihe von Zeichen erzeugt werden.

Überlädt

Name Beschreibung
GetByteCount(ReadOnlySpan<Char>, Boolean)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Anzahl der Bytes berechnet, die durch codieren einer Reihe von Zeichen in der Zeichenspanne erzeugt werden. Ein Parameter gibt an, ob der interne Zustand des Encoders nach der Berechnung gelöscht werden soll.

GetByteCount(Char*, Int32, Boolean)

Wenn eine abgeleitete Klasse überschrieben wird, wird die Anzahl der Bytes berechnet, die durch codieren einer Reihe von Zeichen erstellt werden, die am angegebenen Zeichenzeiger beginnen. Ein Parameter gibt an, ob der interne Zustand des Encoders nach der Berechnung gelöscht werden soll.

GetByteCount(Char[], Int32, Int32, Boolean)

Wenn eine abgeleitete Klasse überschrieben wird, wird die Anzahl der Byte berechnet, die durch codieren einer Reihe von Zeichen aus dem angegebenen Zeichenarray erzeugt werden. Ein Parameter gibt an, ob der interne Zustand des Encoders nach der Berechnung gelöscht werden soll.

Hinweise

Diese Methode wirkt sich nicht auf den Zustand des Encoders aus.

Um die genaue Arraygröße zu berechnen, die GetBytes zum Speichern der resultierenden Bytes erforderlich ist, sollte die Anwendung verwenden GetByteCount.

Wenn GetBytes der Encoder mit flush "Set" falseaufgerufen wird, speichert der Encoder nachfolgende Zeichen am Ende des Datenblocks in einem internen Puffer und verwendet sie im nächsten Codierungsvorgang. Die Anwendung sollte unmittelbar vor dem Aufrufen GetBytes desselben Blocks einen Datenblock aufrufenGetByteCount, sodass alle nachfolgenden Zeichen aus dem vorherigen Block in die Berechnung einbezogen werden.

GetByteCount(ReadOnlySpan<Char>, Boolean)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Anzahl der Bytes berechnet, die durch codieren einer Reihe von Zeichen in der Zeichenspanne erzeugt werden. Ein Parameter gibt an, ob der interne Zustand des Encoders nach der Berechnung gelöscht werden soll.

public:
 virtual int GetByteCount(ReadOnlySpan<char> chars, bool flush);
public virtual int GetByteCount(ReadOnlySpan<char> chars, bool flush);
abstract member GetByteCount : ReadOnlySpan<char> * bool -> int
override this.GetByteCount : ReadOnlySpan<char> * bool -> int
Public Overridable Function GetByteCount (chars As ReadOnlySpan(Of Char), flush As Boolean) As Integer

Parameter

chars
ReadOnlySpan<Char>

Ein Zeichenbereich, der codiert werden soll.

flush
Boolean

trueum das Löschen des internen Zustands des Encoders nach der Berechnung zu simulieren; andernfalls . false

Gibt zurück

Die Anzahl der Byte, die durch Codieren der angegebenen Zeichen und aller Zeichen im internen Puffer erzeugt werden.

Gilt für:

GetByteCount(Char*, Int32, Boolean)

Wichtig

Diese API ist nicht CLS-kompatibel.

Wenn eine abgeleitete Klasse überschrieben wird, wird die Anzahl der Bytes berechnet, die durch codieren einer Reihe von Zeichen erstellt werden, die am angegebenen Zeichenzeiger beginnen. Ein Parameter gibt an, ob der interne Zustand des Encoders nach der Berechnung gelöscht werden soll.

public:
 virtual int GetByteCount(char* chars, int count, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetByteCount(char* chars, int count, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetByteCount(char* chars, int count, bool flush);
[System.CLSCompliant(false)]
public virtual int GetByteCount(char* chars, int count, bool flush);
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int
[<System.CLSCompliant(false)>]
abstract member GetByteCount : nativeptr<char> * int * bool -> int
override this.GetByteCount : nativeptr<char> * int * bool -> int

Parameter

chars
Char*

Ein Zeiger auf das erste zeichen, das codiert werden soll.

count
Int32

Die Anzahl der zu codierenden Zeichen.

flush
Boolean

trueum das Löschen des internen Zustands des Encoders nach der Berechnung zu simulieren; andernfalls . false

Gibt zurück

Die Anzahl der Byte, die durch Codieren der angegebenen Zeichen und aller Zeichen im internen Puffer erzeugt werden.

Attribute

Ausnahmen

chars ist null (Nothing in Visual Basic .NET).

count ist kleiner als 0 (null).

Ein Fallback ist aufgetreten (weitere Informationen finden Sie unter "Zeichencodierung in .NET")

-und-

Fallback ist auf EncoderExceptionFallback festgelegt.

Weitere Informationen

Gilt für:

GetByteCount(Char[], Int32, Int32, Boolean)

Wenn eine abgeleitete Klasse überschrieben wird, wird die Anzahl der Byte berechnet, die durch codieren einer Reihe von Zeichen aus dem angegebenen Zeichenarray erzeugt werden. Ein Parameter gibt an, ob der interne Zustand des Encoders nach der Berechnung gelöscht werden soll.

public:
 abstract int GetByteCount(cli::array <char> ^ chars, int index, int count, bool flush);
public abstract int GetByteCount(char[] chars, int index, int count, bool flush);
abstract member GetByteCount : char[] * int * int * bool -> int
Public MustOverride Function GetByteCount (chars As Char(), index As Integer, count As Integer, flush As Boolean) As Integer

Parameter

chars
Char[]

Das Zeichenarray, das die zu codierenden Zeichensätze enthält.

index
Int32

Der Index des ersten zu codierenden Zeichens.

count
Int32

Die Anzahl der zu codierenden Zeichen.

flush
Boolean

trueum das Löschen des internen Zustands des Encoders nach der Berechnung zu simulieren; andernfalls . false

Gibt zurück

Die Anzahl der Byte, die durch Codieren der angegebenen Zeichen und aller Zeichen im internen Puffer erzeugt werden.

Ausnahmen

chars ist null.

index oder count ist kleiner als Null.

-oder-

index und count keinen gültigen Bereich in chars.

Ein Fallback ist aufgetreten (weitere Informationen finden Sie unter "Zeichencodierung in .NET")

-und-

Fallback ist auf EncoderExceptionFallback festgelegt.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die GetByteCount Methode verwendet wird, um die Anzahl der Bytes zurückzugeben, die zum Codieren eines Arrays von Zeichen mit einem Unicode Encodererforderlich sind.

using System;
using System.Text;

class EncoderExample {
    public static void Main() {
        // 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);
        Console.WriteLine(
            "{0} bytes needed to encode characters.", byteCount
        );
    }
}

/* This example produces the following output.

8 bytes needed to encode characters.

*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class EncoderExample
    
    Public Shared Sub Main()
        ' 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)
        Console.WriteLine("{0} bytes needed to encode characters.", byteCount)
    End Sub
End Class
'
'This example produces the following output.
'
'8 bytes needed to encode characters.
'

Weitere Informationen

Gilt für: