Exportieren (0) Drucken
Alle erweitern

Encoding.GetByteCount-Methode (String)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Bytes, die beim Codieren der Zeichen in der angegebenen String-Klasse erzeugt wird.

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

public virtual int GetByteCount (
	string s
)
public int GetByteCount (
	String s
)
public function GetByteCount (
	s : String
) : int

Parameter

s

Die String-Klasse mit den zu codierenden Zeichen.

Rückgabewert

Die Anzahl der Bytes, die beim Codieren der angegebenen Zeichen erzeugt wird.

AusnahmetypBedingung

ArgumentNullException

s ist NULL (Nothing in Visual Basic).

Verwenden Sie die GetByteCount-Methode zum Berechnen der exakten Arraygröße, die von GetBytes zum Speichern der sich ergebenden Bytes benötigt wird. Verwenden Sie die GetMaxByteCount-Methode zum Berechnen der maximalen Arraygröße. Die GetByteCount-Methode ermöglicht Ihnen, weniger Speicher zuzuordnen, wohingegen die GetMaxByteCount-Methode in der Regel schneller ausgeführt wird.

Im folgenden Codebeispiel wird die Anzahl der zum Codieren einer Zeichenfolge oder eines Bereichs in der Zeichenfolge erforderlichen Bytes bestimmt; weiterhin werden die Zeichen codiert und die sich ergebenden Bytes angezeigt.

using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // The characters to encode:
      //    Latin Small Letter Z (U+007A)
      //    Latin Small Letter A (U+0061)
      //    Combining Breve (U+0306)
      //    Latin Small Letter AE With Acute (U+01FD)
      //    Greek Small Letter Beta (U+03B2)
      //    a high-surrogate value (U+D8FF)
      //    a low-surrogate value (U+DCFF)
      String myStr = "za\u0306\u01FD\u03B2\uD8FF\uDCFF";

      // Get different encodings.
      Encoding  u7    = Encoding.UTF7;
      Encoding  u8    = Encoding.UTF8;
      Encoding  u16LE = Encoding.Unicode;
      Encoding  u16BE = Encoding.BigEndianUnicode;
      Encoding  u32   = Encoding.UTF32;

      // Encode the entire string, and print out the counts and the resulting bytes.
      Console.WriteLine( "Encoding the entire string:" );
      PrintCountsAndBytes( myStr, u7 );
      PrintCountsAndBytes( myStr, u8 );
      PrintCountsAndBytes( myStr, u16LE );
      PrintCountsAndBytes( myStr, u16BE );
      PrintCountsAndBytes( myStr, u32 );

      Console.WriteLine();

      // Encode three characters starting at index 4, and print out the counts and the resulting bytes.
      Console.WriteLine( "Encoding the characters from index 4 through 6:" );
      PrintCountsAndBytes( myStr, 4, 3, u7 );
      PrintCountsAndBytes( myStr, 4, 3, u8 );
      PrintCountsAndBytes( myStr, 4, 3, u16LE );
      PrintCountsAndBytes( myStr, 4, 3, u16BE );
      PrintCountsAndBytes( myStr, 4, 3, u32 );

   }


   public static void PrintCountsAndBytes( String s, Encoding enc )  {

      // Display the name of the encoding used.
      Console.Write( "{0,-30} :", enc.ToString() );

      // Display the exact byte count.
      int iBC  = enc.GetByteCount( s );
      Console.Write( " {0,-3}", iBC );

      // Display the maximum byte count.
      int iMBC = enc.GetMaxByteCount( s.Length );
      Console.Write( " {0,-3} :", iMBC );

      // Encode the entire string.
      byte[] bytes = enc.GetBytes( s );

      // Display all the encoded bytes.
      PrintHexBytes( bytes );

   }


   public static void PrintCountsAndBytes( String s, int index, int count, Encoding enc )  {

      // Display the name of the encoding used.
      Console.Write( "{0,-30} :", enc.ToString() );

      // Display the exact byte count.
      int iBC  = enc.GetByteCount( s.ToCharArray(), index, count );
      Console.Write( " {0,-3}", iBC );

      // Display the maximum byte count.
      int iMBC = enc.GetMaxByteCount( count );
      Console.Write( " {0,-3} :", iMBC );

      // Encode a range of characters in the string.
      byte[] bytes = new byte[iBC];
      enc.GetBytes( s, index, count, bytes, bytes.GetLowerBound(0) );

      // Display all the encoded bytes.
      PrintHexBytes( bytes );

   }


   public static void PrintHexBytes( byte[] bytes )  {

      if (( bytes == null ) || ( bytes.Length == 0 ))
         Console.WriteLine( "<none>" );
      else  {
         for ( int i = 0; i < bytes.Length; i++ )
            Console.Write( "{0:X2} ", bytes[i] );
         Console.WriteLine();
      }

   }

}


/* 
This code produces the following output.

Encoding the entire string:
System.Text.UTF7Encoding       : 18  23  :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D
System.Text.UTF8Encoding       : 12  24  :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
System.Text.UnicodeEncoding    : 14  16  :7A 00 61 00 06 03 FD 01 B2 03 FF D8 FF DC
System.Text.UnicodeEncoding    : 14  16  :00 7A 00 61 03 06 01 FD 03 B2 D8 FF DC FF
System.Text.UTF32Encoding      : 24  32  :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00

Encoding the characters from index 4 through 6:
System.Text.UTF7Encoding       : 10  11  :2B 41 37 4C 59 2F 39 7A 2F 2D
System.Text.UTF8Encoding       : 6   12  :CE B2 F1 8F B3 BF
System.Text.UnicodeEncoding    : 6   8   :B2 03 FF D8 FF DC
System.Text.UnicodeEncoding    : 6   8   :03 B2 D8 FF DC FF
System.Text.UTF32Encoding      : 8   16  :B2 03 00 00 FF FC 04 00

*/


import System.*;
import System.Text.*;

public class SamplesEncoding
{
    public static void main(String[] args)
    {
        // The characters to encode:
        //    Latin Small Letter Z (U+007A)
        //    Latin Small Letter A (U+0061)
        //    Combining Breve (U+0306)
        //    Latin Small Letter AE With Acute (U+01FD)
        //    Greek Small Letter Beta (U+03B2)
        //    a high-surrogate value (U+D8FF)
        //    a low-surrogate value (U+DCFF)
        String myStr = "za\u0306\u01FD\u03B2\uD8FF\uDCFF";

        // Get different encodings.
        Encoding u7 = Encoding.get_UTF7();
        Encoding u8 = Encoding.get_UTF8();
        Encoding u16LE = Encoding.get_Unicode();
        Encoding u16BE = Encoding.get_BigEndianUnicode();
        Encoding u32 = Encoding.get_UTF32();

        // Encode the entire string, and print out the counts
        // and the resulting bytes.
        Console.WriteLine("Encoding the entire string:");
        PrintCountsAndBytes(myStr, u7);
        PrintCountsAndBytes(myStr, u8);
        PrintCountsAndBytes(myStr, u16LE);
        PrintCountsAndBytes(myStr, u16BE);
        PrintCountsAndBytes(myStr, u32);
        Console.WriteLine();

        // Encode three characters starting at index 4, 
        // and print out the counts and the resulting bytes.
        Console.WriteLine("Encoding the characters from index 4 through 6:");
        PrintCountsAndBytes(myStr, 4, 3, u7);
        PrintCountsAndBytes(myStr, 4, 3, u8);
        PrintCountsAndBytes(myStr, 4, 3, u16LE);
        PrintCountsAndBytes(myStr, 4, 3, u16BE);
        PrintCountsAndBytes(myStr, 4, 3, u32);
    } //main

    public static void PrintCountsAndBytes(String s, Encoding enc)
    {
        // Display the name of the encoding used.
        Console.Write("{0,-30} :", enc.ToString());

        // Display the exact byte count.
        int iBC = enc.GetByteCount(s);
        Console.Write(" {0,-3}", String.valueOf(iBC));

        // Display the maximum byte count.
        int iMBC = enc.GetMaxByteCount(s.get_Length());
        Console.Write(" {0,-3} :", String.valueOf(iMBC));

        // Encode the entire string.
        ubyte bytes[] = enc.GetBytes(s);

        // Display all the encoded bytes.
        PrintHexBytes(bytes);
    } //PrintCountsAndBytes

    public static void PrintCountsAndBytes(String s, int index,
                                        int count, Encoding enc)
    {
        // Display the name of the encoding used.
        Console.Write("{0,-30} :", enc.ToString());

        // Display the exact byte count.
        int iBC = enc.GetByteCount(s.ToCharArray(), index, count);
        Console.Write(" {0,-3}", String.valueOf(iBC));

        // Display the maximum byte count.
        int iMBC = enc.GetMaxByteCount(count);
        Console.Write(" {0,-3} :", String.valueOf(iMBC));

        // Encode a range of characters in the string.
        ubyte bytes[] = new ubyte[iBC];
        enc.GetBytes(s, index, count, bytes, bytes.GetLowerBound(0));

        // Display all the encoded bytes.
        PrintHexBytes(bytes);
    } //PrintCountsAndBytes

    public static void PrintHexBytes(ubyte[] bytes)
    {
        if(bytes == null || bytes.length == 0) {
            Console.WriteLine("<none>");
        }
        else {
            for(int i = 0; i < bytes.length; i++) {
                Console.Write("{0:X2} ", 
                        ((System.Byte)bytes[i]).ToString("X2"));
            }
            Console.WriteLine();
        }
    } //PrintHexBytes
} //SamplesEncoding

/* 
This code produces the following output.

Encoding the entire string:
System.Text.UTF7Encoding       : 18  23  :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50
 2F 63 2F 77 2D
System.Text.UTF8Encoding       : 12  24  :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
System.Text.UnicodeEncoding    : 14  16  :7A 00 61 00 06 03 FD 01 B2 03 FF D8 FF
 DC
System.Text.UnicodeEncoding    : 14  16  :00 7A 00 61 03 06 01 FD 03 B2 D8 FF DC
 FF
System.Text.UTF32Encoding      : 24  32  :7A 00 00 00 61 00 00 00 06 03 00 00 FD
 01 00 00 B2 03 00 00 FF FC 04 00

Encoding the characters from index 4 through 6:
System.Text.UTF7Encoding       : 10  11  :2B 41 37 4C 59 2F 39 7A 2F 2D
System.Text.UTF8Encoding       : 6   12  :CE B2 F1 8F B3 BF
System.Text.UnicodeEncoding    : 6   8   :B2 03 FF D8 FF DC
System.Text.UnicodeEncoding    : 6   8   :03 B2 D8 FF DC FF
System.Text.UTF32Encoding      : 8   16  :B2 03 00 00 FF FC 04 00

*/


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0
Anzeigen:
© 2015 Microsoft