Bagikan melalui


UnicodeEncoding.GetByteCount Metode

Definisi

Menghitung jumlah byte yang dihasilkan dengan mengodekan sekumpulan karakter.

Overload

GetByteCount(String)

Menghitung jumlah byte yang dihasilkan dengan mengodekan karakter dalam string yang ditentukan.

GetByteCount(Char*, Int32)

Menghitung jumlah byte yang dihasilkan dengan mengodekan sekumpulan karakter yang dimulai pada penunjuk karakter yang ditentukan.

GetByteCount(Char[], Int32, Int32)

Menghitung jumlah byte yang dihasilkan dengan mengodekan sekumpulan karakter dari array karakter yang ditentukan.

GetByteCount(String)

Sumber:
UnicodeEncoding.cs
Sumber:
UnicodeEncoding.cs
Sumber:
UnicodeEncoding.cs

Menghitung jumlah byte yang dihasilkan dengan mengodekan karakter dalam string yang ditentukan.

public:
 override int GetByteCount(System::String ^ s);
public override int GetByteCount (string s);
override this.GetByteCount : string -> int
Public Overrides Function GetByteCount (s As String) As Integer

Parameter

s
String

String yang berisi sekumpulan karakter yang akan dikodekan.

Mengembalikan

Jumlah byte yang dihasilkan dengan mengodekan karakter yang ditentukan.

Pengecualian

sadalah null.

Jumlah byte yang dihasilkan lebih besar dari angka maksimum yang dapat dikembalikan sebagai bilangan bulat.

Deteksi kesalahan diaktifkan, dan s berisi urutan karakter yang tidak valid.

Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)

-dan-

EncoderFallback diatur ke EncoderExceptionFallback.

Contoh

Contoh berikut memanggil GetMaxByteCount metode dan GetByteCount(String) untuk menghitung jumlah byte maksimum dan aktual yang diperlukan untuk mengodekan string. Ini juga menampilkan jumlah byte aktual yang diperlukan untuk menyimpan aliran byte dengan tanda urutan byte.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF-16 Encoding Example";
        Encoding unicode = Encoding.Unicode;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF-16 Encoding Example':
//          Maximum:         48
//          Actual:          46
//          Actual with BOM: 48
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF-16 Encoding Example"
        Dim unicode As Encoding = Encoding.Unicode

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF-16 Encoding Example':
'          Maximum:         48
'          Actual:          46
'          Actual with BOM: 48

Keterangan

Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetBytes untuk menyimpan byte yang dihasilkan, Anda memanggil GetByteCount metode . Untuk menghitung ukuran array maksimum, Anda memanggil GetMaxByteCount metode . Metode ini GetByteCount umumnya mengalokasikan lebih sedikit memori, sementara GetMaxByteCount metode umumnya dijalankan lebih cepat.

Dengan deteksi kesalahan, urutan yang tidak valid menyebabkan metode ini melempar ArgumentException. Tanpa deteksi kesalahan, urutan yang tidak valid diabaikan, dan tidak ada pengecualian yang dilemparkan.

Penting

Untuk memastikan bahwa byte yang dikodekan didekodekan dengan benar saat disimpan sebagai file atau sebagai aliran, Anda dapat mengawali aliran byte yang dikodekan dengan awalan. Menyisipkan pembukaan di awal aliran byte (seperti di awal serangkaian byte yang akan ditulis ke file) adalah tanggung jawab pengembang, dan jumlah byte dalam pembukaan tidak tercermin dalam nilai yang dikembalikan oleh GetByteCount(String) metode .

Lihat juga

Berlaku untuk

GetByteCount(Char*, Int32)

Sumber:
UnicodeEncoding.cs
Sumber:
UnicodeEncoding.cs
Sumber:
UnicodeEncoding.cs

Penting

API ini bukan kompatibel CLS.

Menghitung jumlah byte yang dihasilkan dengan mengodekan sekumpulan karakter yang dimulai pada penunjuk karakter yang ditentukan.

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

Parameter

chars
Char*

Penunjuk ke karakter pertama yang akan dikodekan.

count
Int32

Jumlah karakter yang akan dikodekan.

Mengembalikan

Jumlah byte yang dihasilkan dengan mengodekan karakter yang ditentukan.

Atribut

Pengecualian

charsadalah null.

count kurang dari nol.

-atau-

Jumlah byte yang dihasilkan lebih besar dari angka maksimum yang dapat dikembalikan sebagai bilangan bulat.

Deteksi kesalahan diaktifkan dan chars berisi urutan karakter yang tidak valid.

Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)

-dan-

EncoderFallback diatur ke EncoderExceptionFallback.

Keterangan

Untuk menghitung ukuran array yang tepat yang GetBytes diperlukan untuk menyimpan byte yang dihasilkan, Anda memanggil GetByteCount metode . Untuk menghitung ukuran array maksimum, Anda memanggil GetMaxByteCount metode . Metode ini GetByteCount umumnya mengalokasikan lebih sedikit memori, sementara GetMaxByteCount metode umumnya dijalankan lebih cepat.

Dengan deteksi kesalahan, urutan yang tidak valid menyebabkan metode ini melempar ArgumentException. Tanpa deteksi kesalahan, urutan yang tidak valid diabaikan, dan tidak ada pengecualian yang dilemparkan.

Penting

Untuk memastikan bahwa byte yang dikodekan didekodekan dengan benar saat disimpan sebagai file atau sebagai aliran, Anda dapat mengawali aliran byte yang dikodekan dengan awalan. Menyisipkan pembukaan di awal aliran byte (seperti di awal serangkaian byte yang akan ditulis ke file) adalah tanggung jawab pengembang, dan jumlah byte dalam pembukaan tidak tercermin dalam nilai yang dikembalikan oleh GetByteCount metode .

Lihat juga

Berlaku untuk

GetByteCount(Char[], Int32, Int32)

Sumber:
UnicodeEncoding.cs
Sumber:
UnicodeEncoding.cs
Sumber:
UnicodeEncoding.cs

Menghitung jumlah byte yang dihasilkan dengan mengodekan sekumpulan karakter dari array karakter yang ditentukan.

public:
 override int GetByteCount(cli::array <char> ^ chars, int index, int count);
public override int GetByteCount (char[] chars, int index, int count);
override this.GetByteCount : char[] * int * int -> int
Public Overrides Function GetByteCount (chars As Char(), index As Integer, count As Integer) As Integer

Parameter

chars
Char[]

Array karakter yang berisi sekumpulan karakter untuk dikodekan.

index
Int32

Indeks karakter pertama yang dikodekan.

count
Int32

Jumlah karakter yang akan dikodekan.

Mengembalikan

Jumlah byte yang dihasilkan dengan mengodekan karakter yang ditentukan.

Pengecualian

chars adalah null (Nothing).

index atau count kurang dari nol.

-atau-

index dan count tidak menunjukkan rentang yang valid dalam chars.

-atau-

Jumlah byte yang dihasilkan lebih besar dari angka maksimum yang dapat dikembalikan sebagai bilangan bulat.

Deteksi kesalahan diaktifkan, dan chars berisi urutan karakter yang tidak valid.

Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)

-dan-

EncoderFallback diatur ke EncoderExceptionFallback.

Contoh

Contoh berikut mengisi array dengan karakter huruf besar dan huruf kecil Latin dan memanggil GetByteCount(Char[], Int32, Int32) metode untuk menentukan jumlah byte yang diperlukan untuk mengodekan karakter huruf kecil Latin. Kemudian menampilkan informasi ini bersama dengan jumlah total byte yang diperlukan jika tanda urutan byte ditambahkan. Ini membandingkan angka ini dengan nilai yang dikembalikan oleh GetMaxByteCount metode , yang menunjukkan jumlah maksimum byte yang diperlukan untuk mengodekan karakter huruf kecil Latin. Contoh berikut mengisi array dengan kombinasi karakter Yunani dan Sirilik dan memanggil GetByteCount(Char[], Int32, Int32) metode untuk menentukan jumlah byte yang diperlukan untuk mengodekan karakter Sirilik. Kemudian menampilkan informasi ini bersama dengan jumlah total byte yang diperlukan jika tanda urutan byte ditambahkan. Ini membandingkan angka ini dengan nilai yang dikembalikan oleh GetMaxByteCount metode , yang menunjukkan jumlah maksimum byte yang diperlukan untuk mengodekan karakter Sirilik.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      int uppercaseStart = 0x0041;
      int uppercaseEnd = 0x005a;
      int lowercaseStart = 0x0061;
      int lowercaseEnd = 0x007a;
      // Instantiate a UTF8 encoding object with BOM support.
      Encoding unicode = Encoding.Unicode;

      // Populate array with characters.
      char[] chars = new char[lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 2];
      int index = 0;
      for (int ctr = uppercaseStart; ctr <= uppercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }
      for (int ctr = lowercaseStart; ctr <= lowercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }

      // Display the bytes needed for the lowercase characters.
      Console.WriteLine("Bytes needed for lowercase Latin characters:");
      Console.WriteLine("   Maximum:         {0,5:N0}",
                        unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          unicode.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            54
//          Actual:             52
//          Actual with BOM:    54
Imports System.Text

Module Example
   Public Sub Main()
      Dim uppercaseStart As Integer = &h0041
      Dim uppercaseEnd As Integer = &h005a
      Dim lowercaseStart As Integer = &h0061
      Dim lowercaseEnd As Integer = &h007a
      ' Instantiate a UTF8 encoding object with BOM support.
      Dim unicode As Encoding = Encoding.Unicode
      
      ' Populate array with characters.
      Dim chars(lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 1) As Char
      Dim index As Integer = 0
      For ctr As Integer = uppercaseStart To uppercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next
      For ctr As Integer = lowercaseStart To lowercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next

      ' Display the bytes needed for the lowercase characters.
        Console.WriteLine("Bytes needed for lowercase Latin characters:")
        Console.WriteLine("   Maximum:         {0,5:N0}",
                          unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            unicode.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            54
'          Actual:             52
'          Actual with BOM:    54

Keterangan

Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetBytes untuk menyimpan byte yang dihasilkan, aplikasi menggunakan GetByteCount. Untuk menghitung ukuran array maksimum, Anda memanggil GetMaxByteCount metode . Metode ini GetByteCount umumnya mengalokasikan lebih sedikit memori, sementara GetMaxByteCount metode umumnya dijalankan lebih cepat.

Dengan deteksi kesalahan diaktifkan, urutan yang tidak valid menyebabkan metode ini melempar ArgumentException. Tanpa deteksi kesalahan, urutan yang tidak valid diabaikan, dan tidak ada pengecualian yang dilemparkan.

Untuk memastikan bahwa byte yang dikodekan didekodekan dengan benar saat disimpan sebagai file atau sebagai aliran, Anda dapat mengawali aliran byte yang dikodekan dengan awalan. Menyisipkan pembukaan di awal aliran byte (seperti di awal serangkaian byte yang akan ditulis ke file) adalah tanggung jawab pengembang, dan jumlah byte dalam pembukaan Tidak tercermin dalam nilai yang dikembalikan oleh GetByteCount(Char[], Int32, Int32) metode .

Lihat juga

Berlaku untuk