Encoding.GetByteCount Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, bir karakter kümesini kodlayarak üretilen bayt sayısını hesaplar.

Aşırı Yüklemeler

GetByteCount(Char[], Int32, Int32)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter dizisinden bir karakter kümesi kodlayarak üretilen bayt sayısını hesaplar.

GetByteCount(String, Int32, Int32)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizeden bir karakter kümesi kodlayarak üretilen bayt sayısını hesaplar.

GetByteCount(Char*, Int32)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter işaretçisinde başlayan bir karakter kümesini kodlayarak üretilen bayt sayısını hesaplar.

GetByteCount(ReadOnlySpan<Char>)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter aralığındaki karakterleri kodlayarak üretilen bayt sayısını hesaplar.

GetByteCount(Char[])

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter dizisindeki tüm karakterleri kodlayarak üretilen bayt sayısını hesaplar.

GetByteCount(String)

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizedeki karakterleri kodlayarak üretilen bayt sayısını hesaplar.

GetByteCount(Char[], Int32, Int32)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter dizisinden bir karakter kümesi kodlayarak üretilen bayt sayısını hesaplar.

C#
public abstract int GetByteCount (char[] chars, int index, int count);

Parametreler

chars
Char[]

Kodlanması gereken karakter kümesini içeren karakter dizisi.

index
Int32

Kodlanacak ilk karakterin dizini.

count
Int32

Kodlanacak karakter sayısı.

Döndürülenler

Belirtilen karakterleri kodlayarak üretilen bayt sayısı.

Özel durumlar

chars, null değeridir.

index veya count sıfırdan küçüktür.

-veya-

index ve count içinde charsgeçerli bir aralığı ifade etmeyin.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama)

-Ve-

EncoderFallback olarak ayarlanır EncoderExceptionFallback.

Örnekler

Aşağıdaki örnek, bir karakter dizisinden üç karakteri kodlamak için gereken bayt sayısını belirler, karakterleri kodlar ve sonuçta elde edilen baytları görüntüler.

C#
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)
      char[] myChars = new char[] { 'z', 'a', '\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 three characters starting at index 4, and print out the counts and the resulting bytes.
      PrintCountsAndBytes( myChars, 4, 3, u7 );
      PrintCountsAndBytes( myChars, 4, 3, u8 );
      PrintCountsAndBytes( myChars, 4, 3, u16LE );
      PrintCountsAndBytes( myChars, 4, 3, u16BE );
      PrintCountsAndBytes( myChars, 4, 3, u32 );
   }

   public static void PrintCountsAndBytes( char[] chars, 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( chars, index, count );
      Console.Write( " {0,-3}", iBC );

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

      // Encode the array of chars.
      byte[] bytes = enc.GetBytes( chars, index, count );

      // The following is an alternative way to encode the array of chars:
      // byte[] bytes = new byte[iBC];
      // enc.GetBytes( chars, 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.

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

*/

Açıklamalar

Sonucu elde edilen baytları depolamak için tarafından GetBytes gereken dizi boyutunu tam olarak hesaplamak için yöntemini çağırın GetByteCount . En büyük dizi boyutunu hesaplamak için yöntemini çağırın GetMaxByteCount . GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

GetByteCount yöntemi, bir Unicode karakter kümesini kodlamanın kaç baytla sonuçlandığını GetBytes belirler ve yöntem gerçek kodlamayı gerçekleştirir. GetBytes yöntemi, tek bir giriş akışında birden çok dönüştürmeyi işleyen yöntemin Encoder.GetBytes aksine ayrı dönüştürmeler bekler.

ve'nin GetByteCountGetBytes çeşitli sürümleri desteklenir. Aşağıdakiler, bu yöntemlerin kullanımı için programlamada dikkat edilmesi gereken bazı noktalardır:

  • Uygulamanızın bir kod sayfasına birçok giriş karakteri kodlaması ve birden çok çağrı kullanarak karakterleri işlemesi gerekebilir. Bu durumda, kullanılan nesne tarafından Encoder kalıcı olan durumu hesaba katarak çağrılar arasında durumu korumanız gerekebilir.

  • Uygulamanız dize girişlerini işliyorsa, dize sürümü GetBytes önerilir.

  • Unicode karakter arabelleği sürümü GetBytes(Char*, Int32, Byte*, Int32) , özellikle nesneyi kullanan Encoder veya var olan arabelleklere eklenen birden çok çağrıda bazı hızlı tekniklere izin verir. Bununla birlikte, işaretçiler gerekli olduğundan bu yöntem sürümünün bazen güvenli olmadığını unutmayın.

  • Uygulamanızın büyük miktarda veriyi dönüştürmesi gerekiyorsa çıkış arabelleği yeniden kullanılmalıdır. Bu durumda bayt GetBytes dizilerini destekleyen sürüm en iyi seçenektir.

  • yerine GetByteCountyöntemini kullanmayı Encoder.Convert göz önünde bulundurun. Dönüştürme yöntemi mümkün olduğunca çok veriyi dönüştürür ve çıkış arabelleği çok küçükse bir özel durum oluşturur. Bir akışın sürekli kodlaması için bu yöntem genellikle en iyi seçenektir.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetByteCount(String, Int32, Int32)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizeden bir karakter kümesi kodlayarak üretilen bayt sayısını hesaplar.

C#
public int GetByteCount (string s, int index, int count);

Parametreler

s
String

Kodlanması gereken karakter kümesini içeren dize.

index
Int32

Kodlanacak ilk karakterin dizini.

count
Int32

Kodlanacak karakter sayısı.

Döndürülenler

Dizeyi kodlayarak üretilen bayt sayısı.

Örnekler

Aşağıdaki örnek, bir karakter dizisinden üç karakteri kodlamak için gereken bayt sayısını belirler, karakterleri kodlar ve sonuçta elde edilen baytları görüntüler.

C#
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)
      char[] myChars = new char[] { 'z', 'a', '\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 three characters starting at index 4, and print out the counts and the resulting bytes.
      PrintCountsAndBytes( myChars, 4, 3, u7 );
      PrintCountsAndBytes( myChars, 4, 3, u8 );
      PrintCountsAndBytes( myChars, 4, 3, u16LE );
      PrintCountsAndBytes( myChars, 4, 3, u16BE );
      PrintCountsAndBytes( myChars, 4, 3, u32 );
   }

   public static void PrintCountsAndBytes( char[] chars, 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( chars, index, count );
      Console.Write( " {0,-3}", iBC );

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

      // Encode the array of chars.
      byte[] bytes = enc.GetBytes( chars, index, count );

      // The following is an alternative way to encode the array of chars:
      // byte[] bytes = new byte[iBC];
      // enc.GetBytes( chars, 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.

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

*/

Açıklamalar

Sonucu elde edilen baytları depolamak için tarafından GetBytes gereken dizi boyutunu tam olarak hesaplamak için yöntemini çağırın GetByteCount . En büyük dizi boyutunu hesaplamak için yöntemini çağırın GetMaxByteCount . GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

GetByteCount yöntemi, bir Unicode karakter kümesini kodlamanın kaç baytla sonuçlandığını GetBytes belirler ve yöntem gerçek kodlamayı gerçekleştirir. GetBytes yöntemi, tek bir giriş akışında birden çok dönüştürmeyi işleyen yöntemin Encoder.GetBytes aksine ayrı dönüştürmeler bekler.

ve'nin GetByteCountGetBytes çeşitli sürümleri desteklenir. Aşağıdakiler, bu yöntemlerin kullanımı için programlamada dikkat edilmesi gereken bazı noktalardır:

  • Uygulamanızın bir kod sayfasına birçok giriş karakteri kodlaması ve birden çok çağrı kullanarak karakterleri işlemesi gerekebilir. Bu durumda, kullanılan nesne tarafından Encoder kalıcı olan durumu hesaba katarak çağrılar arasında durumu korumanız gerekebilir.

  • Uygulamanız dize girişlerini işliyorsa, dize sürümü GetBytes önerilir.

  • Unicode karakter arabelleği sürümü GetBytes(Char*, Int32, Byte*, Int32) , özellikle nesneyi kullanan Encoder veya var olan arabelleklere eklenen birden çok çağrıda bazı hızlı tekniklere izin verir. Bununla birlikte, işaretçiler gerekli olduğundan bu yöntem sürümünün bazen güvenli olmadığını unutmayın.

  • Uygulamanızın büyük miktarda veriyi dönüştürmesi gerekiyorsa çıkış arabelleği yeniden kullanılmalıdır. Bu durumda bayt GetBytes dizilerini destekleyen sürüm en iyi seçenektir.

  • yerine GetByteCountyöntemini kullanmayı Encoder.Convert göz önünde bulundurun. Dönüştürme yöntemi mümkün olduğunca çok veriyi dönüştürür ve çıkış arabelleği çok küçükse bir özel durum oluşturur. Bir akışın sürekli kodlaması için bu yöntem genellikle en iyi seçenektir.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

GetByteCount(Char*, Int32)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Önemli

Bu API, CLS uyumlu değildir.

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter işaretçisinde başlayan bir karakter kümesini kodlayarak üretilen bayt sayısını hesaplar.

C#
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public virtual int GetByteCount (char* chars, int count);
C#
[System.CLSCompliant(false)]
public virtual int GetByteCount (char* chars, int count);
C#
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetByteCount (char* chars, int count);
C#
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetByteCount (char* chars, int count);

Parametreler

chars
Char*

Kodlanacak ilk karakterin işaretçisi.

count
Int32

Kodlanacak karakter sayısı.

Döndürülenler

Belirtilen karakterleri kodlayarak üretilen bayt sayısı.

Öznitelikler

Özel durumlar

chars, null değeridir.

count, sıfırdan küçüktür.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama)

-Ve-

EncoderFallback olarak ayarlanır EncoderExceptionFallback.

Açıklamalar

Elde edilen baytların depolanmasını gerektiren GetBytes dizi boyutunu tam olarak hesaplamak için yöntemini çağırmanız GetByteCount gerekir. En büyük dizi boyutunu hesaplamak için yöntemini çağırın GetMaxByteCount . GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

GetByteCount(Char*, Int32) yöntemi, bir Unicode karakter kümesini kodlamanın kaç baytla sonuçlandığını GetBytes(Char*, Int32, Byte*, Int32) belirler ve yöntem gerçek kodlamayı gerçekleştirir. GetBytes yöntemi, tek bir giriş akışında birden çok dönüştürmeyi işleyen yöntemin Encoder.GetBytes aksine ayrı dönüştürmeler bekler.

ve'nin GetByteCountGetBytes çeşitli sürümleri desteklenir. Aşağıdakiler, bu yöntemlerin kullanılmasıyla ilgili dikkat edilmesi gereken bazı noktalardır:

  • Uygulamanızın bir kod sayfasına birçok giriş karakteri kodlaması ve birden çok çağrı kullanarak karakterleri işlemesi gerekebilir. Bu durumda, kullanılan nesne tarafından Encoder kalıcı olan durumu hesaba katarak çağrılar arasında durumu korumanız gerekebilir.

  • Uygulamanız dize girişlerini işleyecekse yönteminin dize sürümünü GetBytes kullanmanız gerekir.

  • Unicode karakter arabelleği sürümü GetBytes , özellikle nesneyi kullanan Encoder veya var olan arabelleklere eklenen birden çok çağrıda bazı hızlı tekniklere izin verir. Bununla birlikte, işaretçiler gerekli olduğundan bu yöntem sürümünün bazen güvenli olmadığını unutmayın.

  • Uygulamanızın büyük miktarda veriyi dönüştürmesi gerekiyorsa çıkış arabelleği yeniden kullanılmalıdır. Bu durumda bayt GetBytes dizilerini destekleyen sürüm en iyi seçenektir.

  • yerine GetByteCountyöntemini kullanmayı Encoder.Convert göz önünde bulundurun. Dönüştürme yöntemi mümkün olduğunca çok veriyi dönüştürür ve çıkış arabelleği çok küçükse bir özel durum oluşturur. Bir akışın sürekli kodlaması için bu yöntem genellikle en iyi seçenektir.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetByteCount(ReadOnlySpan<Char>)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter aralığındaki karakterleri kodlayarak üretilen bayt sayısını hesaplar.

C#
public virtual int GetByteCount (ReadOnlySpan<char> chars);

Parametreler

chars
ReadOnlySpan<Char>

Kodlanacak karakterlerin yayılması.

Döndürülenler

Belirtilen karakter aralığını kodlayarak üretilen bayt sayısı.

Açıklamalar

Sonucu elde edilen baytları depolamak için tarafından GetBytes gereken tam yayılma boyutunu hesaplamak için yöntemini çağırın GetByteCount . Maksimum yayılma boyutunu hesaplamak için yöntemini çağırın GetMaxByteCount . GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

GetByteCount yöntemi, bir Unicode karakter kümesini kodlamanın kaç baytla sonuçlandığını GetBytes belirler ve yöntem gerçek kodlamayı gerçekleştirir. GetBytes yöntemi, tek bir giriş akışında birden çok dönüştürmeyi işleyen yöntemin Encoder.GetBytes aksine ayrı dönüştürmeler bekler.

ve'nin GetByteCountGetBytes çeşitli sürümleri desteklenir. Aşağıdakiler, bu yöntemlerin kullanımı için programlamada dikkat edilmesi gereken bazı noktalardır:

  • Uygulamanızın bir kod sayfasına birçok giriş karakteri kodlaması ve birden çok çağrı kullanarak karakterleri işlemesi gerekebilir. Bu durumda, kullanılan nesne tarafından Encoder kalıcı olan durumu hesaba katarak çağrılar arasında durumu korumanız gerekebilir.

  • Uygulamanız karakter girişlerinin aralığını işliyorsa, span sürümü GetBytes önerilir.

  • yerine GetByteCountyöntemini kullanmayı Encoder.Convert göz önünde bulundurun. Dönüştürme yöntemi mümkün olduğunca çok veriyi dönüştürür ve çıkış aralığı arabelleği çok küçükse bir özel durum oluşturur. Bir akışın sürekli kodlaması için bu yöntem genellikle en iyi seçenektir.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

GetByteCount(Char[])

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter dizisindeki tüm karakterleri kodlayarak üretilen bayt sayısını hesaplar.

C#
public virtual int GetByteCount (char[] chars);

Parametreler

chars
Char[]

Kodlanması gereken karakterleri içeren karakter dizisi.

Döndürülenler

Belirtilen karakter dizisindeki tüm karakterleri kodlayarak üretilen bayt sayısı.

Özel durumlar

chars, null değeridir.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama)

-Ve-

EncoderFallback olarak ayarlanır EncoderExceptionFallback.

Örnekler

Aşağıdaki örnek, bir karakter dizisini kodlamak için gereken bayt sayısını belirler, karakterleri kodlar ve sonuçta elde edilen baytları görüntüler.

C#
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)
      char[] myChars = new char[] { 'z', 'a', '\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 array, and print out the counts and the resulting bytes.
      PrintCountsAndBytes( myChars, u7 );
      PrintCountsAndBytes( myChars, u8 );
      PrintCountsAndBytes( myChars, u16LE );
      PrintCountsAndBytes( myChars, u16BE );
      PrintCountsAndBytes( myChars, u32 );
   }

   public static void PrintCountsAndBytes( char[] chars, Encoding enc )  {

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

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

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

      // Encode the array of chars.
      byte[] bytes = enc.GetBytes( chars );

      // 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.

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

*/

Açıklamalar

Sonucu elde edilen baytları depolamak için tarafından GetBytes gereken dizi boyutunu tam olarak hesaplamak için yöntemini çağırın GetByteCount . En büyük dizi boyutunu hesaplamak için yöntemini çağırın GetMaxByteCount . GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

GetByteCount yöntemi, bir Unicode karakter kümesini kodlamanın kaç baytla sonuçlandığını GetBytes belirler ve yöntem gerçek kodlamayı gerçekleştirir. GetBytes yöntemi, tek bir giriş akışında birden çok dönüştürmeyi işleyen yöntemin Encoder.GetBytes aksine ayrı dönüştürmeler bekler.

ve'nin GetByteCountGetBytes çeşitli sürümleri desteklenir. Aşağıdakiler, bu yöntemlerin kullanımı için programlamada dikkat edilmesi gereken bazı noktalardır:

  • Uygulamanızın bir kod sayfasına birçok giriş karakteri kodlaması ve birden çok çağrı kullanarak karakterleri işlemesi gerekebilir. Bu durumda, kullanılan nesne tarafından Encoder kalıcı olan durumu hesaba katarak çağrılar arasında durumu korumanız gerekebilir.

  • Uygulamanız dize girişlerini işleyecekse yönteminin dize sürümlerini GetBytes kullanmanız gerekir.

  • Unicode karakter arabelleği sürümü GetBytes(Char*, Int32, Byte*, Int32) , özellikle nesneyi kullanan Encoder veya var olan arabelleklere eklenen birden çok çağrıda bazı hızlı tekniklere izin verir. Bununla birlikte, işaretçiler gerekli olduğundan bu yöntem sürümünün bazen güvenli olmadığını unutmayın.

  • Uygulamanızın büyük miktarda veriyi dönüştürmesi gerekiyorsa çıkış arabelleği yeniden kullanmanız gerekir. Bu durumda bayt GetBytes dizilerini destekleyen sürüm en iyi seçenektir.

  • yerine GetByteCountyöntemini kullanmayı Encoder.Convert göz önünde bulundurun. Dönüştürme yöntemi mümkün olduğunca çok veriyi dönüştürür ve çıkış arabelleği çok küçükse bir özel durum oluşturur. Bir akışın sürekli kodlaması için bu yöntem genellikle en iyi seçenektir.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetByteCount(String)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen dizedeki karakterleri kodlayarak üretilen bayt sayısını hesaplar.

C#
public virtual int GetByteCount (string s);

Parametreler

s
String

Kodlanması gereken karakter kümesini içeren dize.

Döndürülenler

Belirtilen karakterleri kodlayarak üretilen bayt sayısı.

Özel durumlar

s, null değeridir.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama)

-Ve-

EncoderFallback olarak ayarlanır EncoderExceptionFallback.

Örnekler

Aşağıdaki örnek, dizedeki bir dizeyi veya aralığı kodlamak için gereken bayt sayısını belirler, karakterleri kodlar ve sonuçta elde edilen baytları görüntüler.

C#
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

*/

Açıklamalar

Sonucu elde edilen baytları depolamak için tarafından GetBytes gereken dizi boyutunu tam olarak hesaplamak için yöntemini çağırın GetByteCount . En büyük dizi boyutunu hesaplamak için yöntemini çağırın GetMaxByteCount . GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

GetByteCount yöntemi, bir Unicode karakter kümesini kodlamanın kaç baytla sonuçlandığını GetBytes belirler ve yöntem gerçek kodlamayı gerçekleştirir. GetBytes yöntemi, tek bir giriş akışında birden çok dönüştürmeyi işleyen yöntemin Encoder.GetBytes aksine ayrı dönüştürmeler bekler.

ve'nin GetByteCountGetBytes çeşitli sürümleri desteklenir. Aşağıdakiler, bu yöntemlerin kullanımı için programlamada dikkat edilmesi gereken bazı noktalardır:

  • Uygulamanızın bir kod sayfasına birçok giriş karakteri kodlaması ve birden çok çağrı kullanarak karakterleri işlemesi gerekebilir. Bu durumda, kullanılan nesne tarafından Encoder kalıcı olan durumu hesaba katarak çağrılar arasında durumu korumanız gerekebilir.

  • Uygulamanız dize girişlerini işliyorsa, dize sürümü GetBytes önerilir.

  • Unicode karakter arabelleği sürümü GetBytes(Char*, Int32, Byte*, Int32) , özellikle nesneyi kullanan Encoder veya var olan arabelleklere eklenen birden çok çağrıda bazı hızlı tekniklere izin verir. Bununla birlikte, işaretçiler gerekli olduğundan bu yöntem sürümünün bazen güvenli olmadığını unutmayın.

  • Uygulamanızın büyük miktarda veriyi dönüştürmesi gerekiyorsa çıkış arabelleği yeniden kullanılmalıdır. Bu durumda bayt GetBytes dizilerini destekleyen sürüm en iyi seçenektir.

  • yerine GetByteCountyöntemini kullanmayı Encoder.Convert göz önünde bulundurun. Dönüştürme yöntemi mümkün olduğunca çok veriyi dönüştürür ve çıkış arabelleği çok küçükse bir özel durum oluşturur. Bir akışın sürekli kodlaması için bu yöntem genellikle en iyi seçenektir.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0