Bagikan melalui


UnicodeEncoding.GetBytes Metode

Definisi

Mengodekan sekumpulan karakter ke dalam urutan byte.

Overload

GetBytes(Char[], Int32, Int32, Byte[], Int32)

Mengodekan sekumpulan karakter dari array karakter yang ditentukan ke dalam array byte yang ditentukan.

GetBytes(String, Int32, Int32, Byte[], Int32)

Mengodekan sekumpulan karakter dari yang ditentukan String ke dalam array byte yang ditentukan.

GetBytes(String)

Mengodekan sekumpulan karakter dari string yang ditentukan ke dalam array byte yang ditentukan.

GetBytes(Char*, Int32, Byte*, Int32)

Mengodekan sekumpulan karakter yang dimulai pada penunjuk karakter yang ditentukan ke dalam urutan byte yang disimpan mulai dari penunjuk byte yang ditentukan.

GetBytes(Char[], Int32, Int32, Byte[], Int32)

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

Mengodekan sekumpulan karakter dari array karakter yang ditentukan ke dalam array byte yang ditentukan.

public:
 override int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes (char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : char[] * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

Parameter

chars
Char[]

Array karakter yang berisi sekumpulan karakter untuk dikodekan.

charIndex
Int32

Indeks karakter pertama yang dikodekan.

charCount
Int32

Jumlah karakter yang akan dikodekan.

bytes
Byte[]

Array byte untuk berisi urutan byte yang dihasilkan.

byteIndex
Int32

Indeks untuk mulai menulis urutan byte yang dihasilkan.

Mengembalikan

Jumlah byte aktual yang ditulis ke dalam bytes.

Pengecualian

chars adalah null (Nothing).

-atau-

bytes adalah null (Nothing).

charIndex atau charCount atau byteIndex kurang dari nol.

-atau-

charIndex dan charCount tidak menunjukkan rentang yang valid dalam chars.

-atau-

byteIndex bukan indeks yang valid di bytes.

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

-atau-

bytes tidak memiliki kapasitas yang cukup dari byteIndex hingga akhir array untuk mengakomodasi byte yang dihasilkan.

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

-dan-

EncoderFallback diatur ke EncoderExceptionFallback.

Contoh

Contoh berikut menunjukkan cara menggunakan GetBytes metode untuk mengodekan berbagai karakter dari String dan menyimpan byte yang dikodekan dalam berbagai elemen dalam array byte.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   String^ chars = "Unicode Encoding Example";
   UnicodeEncoding^ Unicode = gcnew UnicodeEncoding;
   int byteCount = Unicode->GetByteCount( chars->ToCharArray(), 8, 8 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = Unicode->GetBytes( chars, 8, 8, bytes, 0 );
   Console::WriteLine( "{0} bytes used to encode string.", bytesEncodedCount );
   Console::Write( "Encoded bytes: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

   Console::WriteLine();
}
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "Unicode Encoding Example";
        
        UnicodeEncoding Unicode = new UnicodeEncoding();
        
        int byteCount = Unicode.GetByteCount(chars.ToCharArray(), 8, 8);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = Unicode.GetBytes(chars, 8, 8, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode string.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        Dim chars As String = "Unicode Encoding Example"
        
        Dim uni As New UnicodeEncoding()
        
        Dim byteCount As Integer = uni.GetByteCount(chars.ToCharArray(), 8, 8)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = uni.GetBytes(chars, 8, 8, bytes, 0)
        
        Console.WriteLine("{0} bytes used to encode string.", bytesEncodedCount)
        
        Console.Write("Encoded bytes: ")
        Dim b As Byte
        For Each b In  bytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()
    End Sub
End Class

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.

Data yang akan dikonversi, seperti data yang dibaca dari aliran, mungkin hanya tersedia dalam blok berurutan. Dalam hal ini, atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, aplikasi harus menggunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode .

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. Metode GetBytes ini tidak menambahkan preamble ke awal urutan byte yang dikodekan.

Lihat juga

Berlaku untuk

GetBytes(String, Int32, Int32, Byte[], Int32)

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

Mengodekan sekumpulan karakter dari yang ditentukan String ke dalam array byte yang ditentukan.

public:
 override int GetBytes(System::String ^ s, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes (string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (s As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

Parameter

s
String

String yang berisi sekumpulan karakter yang akan dikodekan.

charIndex
Int32

Indeks karakter pertama yang dikodekan.

charCount
Int32

Jumlah karakter yang akan dikodekan.

bytes
Byte[]

Array byte untuk berisi urutan byte yang dihasilkan.

byteIndex
Int32

Indeks untuk mulai menulis urutan byte yang dihasilkan.

Mengembalikan

Jumlah byte aktual yang ditulis ke dalam bytes.

Pengecualian

sadalah null.

-atau-

bytes adalah null (Nothing).

charIndex atau charCount atau byteIndex kurang dari nol.

-atau-

charIndex dan charCount tidak menunjukkan rentang yang valid dalam chars.

-atau-

byteIndex bukan indeks yang valid di bytes.

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

-atau-

bytes tidak memiliki kapasitas yang cukup dari byteIndex hingga akhir array untuk mengakomodasi byte yang dihasilkan.

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

-dan-

EncoderFallback diatur ke EncoderExceptionFallback.

Contoh

Contoh berikut menunjukkan cara mengodekan berbagai elemen dari array karakter Unicode dan menyimpan byte yang dikodekan dalam berbagai elemen dalam array byte.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   
   // Unicode characters.
   
   // Pi
   // Sigma
   array<Char>^chars = {L'\u03a0',L'\u03a3',L'\u03a6',L'\u03a9'};
   UnicodeEncoding^ Unicode = gcnew UnicodeEncoding;
   int byteCount = Unicode->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = Unicode->GetBytes( chars, 1, 2, bytes, 0 );
   Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount );
   Console::Write( "Encoded bytes: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

   Console::WriteLine();
}
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UnicodeEncoding Unicode = new UnicodeEncoding();
        
        int byteCount = Unicode.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = Unicode.GetBytes(chars, 1, 2, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte

        ' 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 uni As New UnicodeEncoding()
        
        Dim byteCount As Integer = uni.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = uni.GetBytes(chars, 1, 2, bytes, 0)
        
        Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
        
        Console.Write("Encoded bytes: ")
        Dim b As Byte
        For Each b In  bytes
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine()
    End Sub
End Class

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.

Data yang akan dikonversi, seperti data yang dibaca dari aliran, mungkin hanya tersedia dalam blok berurutan. Dalam hal ini, atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, aplikasi harus menggunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode .

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. Metode GetBytes ini tidak menambahkan preamble ke awal urutan byte yang dikodekan.

Lihat juga

Berlaku untuk

GetBytes(String)

Mengodekan sekumpulan karakter dari string yang ditentukan ke dalam array byte yang ditentukan.

public:
 override cli::array <System::Byte> ^ GetBytes(System::String ^ s);
public override byte[] GetBytes (string s);
override this.GetBytes : string -> byte[]
Public Overrides Function GetBytes (s As String) As Byte()

Parameter

s
String

Mengembalikan

Byte[]

Berlaku untuk

GetBytes(Char*, Int32, Byte*, Int32)

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

Penting

API ini bukan kompatibel CLS.

Mengodekan sekumpulan karakter yang dimulai pada penunjuk karakter yang ditentukan ke dalam urutan byte yang disimpan mulai dari penunjuk byte yang ditentukan.

public:
 override int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount);
[System.CLSCompliant(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[<System.CLSCompliant(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int

Parameter

chars
Char*

Penunjuk ke karakter pertama yang akan dikodekan.

charCount
Int32

Jumlah karakter yang akan dikodekan.

bytes
Byte*

Penunjuk ke lokasi untuk mulai menulis urutan byte yang dihasilkan.

byteCount
Int32

Jumlah maksimum byte yang akan ditulis.

Mengembalikan

Jumlah aktual byte yang ditulis di lokasi yang ditunjukkan oleh bytes parameter .

Atribut

Pengecualian

chars adalah null (Nothing).

-atau-

bytes adalah null (Nothing).

charCount atau byteCount kurang dari nol.

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

-atau-

byteCount kurang dari jumlah byte yang dihasilkan.

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.

Data yang akan dikonversi, seperti data yang dibaca dari aliran, mungkin hanya tersedia dalam blok berurutan. Dalam hal ini, atau jika jumlah data sangat besar sehingga perlu dibagi menjadi blok yang lebih kecil, aplikasi harus menggunakan Decoder atau Encoder objek yang disediakan oleh GetDecoder atau GetEncoder metode , masing-masing.

Penting

Untuk memastikan bahwa byte yang dikodekan didekode dengan benar ketika disimpan sebagai file atau sebagai aliran, Anda dapat mengawali aliran byte yang dikodekan dengan dapat dimulalui. Menyisipkan pembukaan di awal aliran byte (seperti di awal serangkaian byte yang akan ditulis ke file) adalah tanggung jawab pengembang. Metode GetBytes ini tidak menambahkan preamble ke awal urutan byte yang dikodekan.

Lihat juga

Berlaku untuk