Bagikan melalui


UTF8Encoding.GetByteCount Metode

Definisi

Menghitung jumlah byte yang dihasilkan dengan mengodekan sekumpulan karakter.

Overload

GetByteCount(ReadOnlySpan<Char>)

Menghitung jumlah byte yang dihasilkan dengan mengodekan rentang karakter yang ditentukan.

GetByteCount(String)

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

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(ReadOnlySpan<Char>)

Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.cs

Menghitung jumlah byte yang dihasilkan dengan mengodekan rentang karakter yang ditentukan.

public:
 override int GetByteCount(ReadOnlySpan<char> chars);
public override int GetByteCount (ReadOnlySpan<char> chars);
override this.GetByteCount : ReadOnlySpan<char> -> int
Public Overrides Function GetByteCount (chars As ReadOnlySpan(Of Char)) As Integer

Parameter

chars
ReadOnlySpan<Char>

Rentang yang berisi sekumpulan karakter untuk dikodekan.

Mengembalikan

Jumlah byte yang dihasilkan dengan mengodekan rentang karakter yang ditentukan.

Pengecualian

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 tepat yang diperlukan oleh GetBytes untuk menyimpan byte yang dihasilkan, Anda memanggil GetByteCount metode . Untuk menghitung ukuran 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 melemparkan ArgumentException pengecualian. 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 metode .

Berlaku untuk

GetByteCount(String)

Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.cs

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

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

Parameter

chars
String

String yang berisi sekumpulan karakter untuk dikodekan.

Mengembalikan

Jumlah byte yang dihasilkan dengan mengodekan karakter yang ditentukan.

Pengecualian

charsadalah null.

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 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 = "UTF8 Encoding Example";
        Encoding utf8 = Encoding.UTF8;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF8 Encoding Example':
//          Maximum:         66
//          Actual:          21
//          Actual with BOM: 24
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF8 Encoding Example"
        Dim utf8 As Encoding = Encoding.UTF8

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF8 Encoding Example':
'          Maximum:         66
'          Actual:          21
'          Actual with BOM: 24

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 melemparkan ArgumentException pengecualian. 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 metode .

Lihat juga

Berlaku untuk

GetByteCount(Char*, Int32)

Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.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)]
[System.Security.SecurityCritical]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
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)>]
[<System.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
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 (lihat Pengodean Karakter di .NET untuk penjelasan lengkap).

-dan-

EncoderFallback diatur ke EncoderExceptionFallback.

Keterangan

Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetBytes metode 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 melemparkan ArgumentException pengecualian. 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 metode .

Lihat juga

Berlaku untuk

GetByteCount(Char[], Int32, Int32)

Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.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

charsadalah null.

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-

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

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 utf8 = new UTF8Encoding(true);

      // 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}",
                        utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          utf8.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            81
//          Actual:             26
//          Actual with BOM:    29
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 utf8 As New UTF8Encoding(True)
      
      ' 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}",
                          utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            utf8.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            81
'          Actual:             26
'          Actual with BOM:    29

Keterangan

Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetBytes untuk menyimpan byte yang dihasilkan, Anda memanggil metode penggunaan 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, urutan yang tidak valid menyebabkan metode ini melemparkan ArgumentException pengecualian. 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 metode .

Lihat juga

Berlaku untuk