Compartir a través de


Encoder.GetByteCount Method (array<Char[], Int32, Int32, Boolean)

Microsoft Silverlight will reach end of support after October 2021. Learn more.

When overridden in a derived class, calculates the number of bytes produced by encoding a set of characters from the specified character array. A parameter indicates whether to clear the internal state of the encoder after the calculation.

Namespace:  System.Text
Assembly:  mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public MustOverride Function GetByteCount ( _
    chars As Char(), _
    index As Integer, _
    count As Integer, _
    flush As Boolean _
) As Integer
public abstract int GetByteCount(
    char[] chars,
    int index,
    int count,
    bool flush
)

Parameters

  • chars
    Type: array<System.Char[]
    The character array containing the set of characters to encode.
  • index
    Type: System.Int32
    The zero-based index of the first character to encode.
  • count
    Type: System.Int32
    The number of characters to encode.
  • flush
    Type: System.Boolean
    true to simulate clearing the internal state of the encoder after the calculation; otherwise, false.

Return Value

Type: System.Int32
The number of bytes produced by encoding the specified characters and any characters in the internal buffer.

Exceptions

Exception Condition
ArgumentNullException

chars is nulla null reference (Nothing in Visual Basic).

ArgumentOutOfRangeException

index or count is less than zero.

-or-

index and count do not denote a valid range in chars.

EncoderFallbackException

A fallback occurred (see Understanding Encodings for fuller explanation).

Remarks

This method does not affect the state of the encoder.

The GetByteCount(array<Char[], Int32, Int32, Boolean) method calculates the exact array size that the GetBytes method requires to store the encoded bytes.

If GetBytes is called with flush set to false, the encoder stores trailing characters at the end of the data block in an internal buffer and uses them in the next encoding operation. The application should call GetByteCount on a block of data immediately before calling GetBytes on the same block, so that any trailing characters from the previous block are included in the calculation.

Examples

The following code example demonstrates how to use the GetByteCount method to return the number of bytes required to encode an array of characters using a Unicode Encoder.

Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class Example

   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      ' 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)
      outputBlock.Text += String.Format("{0} bytes needed to encode characters.", byteCount) & vbCrLf
   End Sub 'Main
End Class 'EncoderExample
using System;
using System.Text;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // 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);
      outputBlock.Text += String.Format(
          "{0} bytes needed to encode characters.", byteCount
      ) + "\n";
   }
}

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.