Bagikan melalui


UTF8Encoding.GetBytes Metode

Definisi

Mengodekan sekumpulan karakter ke dalam urutan byte.

Overload

GetBytes(String)

Mengodekan karakter dalam objek tertentu String ke dalam urutan byte.

GetBytes(ReadOnlySpan<Char>, Span<Byte>)

Mengodekan rentang karakter yang ditentukan ke dalam rentang 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)

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 karakter dalam objek tertentu String ke dalam urutan byte.

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

String karakter yang akan dikodekan.

Mengembalikan

Byte[]

Array byte yang berisi karakter yang dikodekan dalam string yang ditentukan oleh parameter s.

Berlaku untuk

GetBytes(ReadOnlySpan<Char>, Span<Byte>)

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

Mengodekan rentang karakter yang ditentukan ke dalam rentang byte yang ditentukan.

public:
 override int GetBytes(ReadOnlySpan<char> chars, Span<System::Byte> bytes);
public override int GetBytes (ReadOnlySpan<char> chars, Span<byte> bytes);
override this.GetBytes : ReadOnlySpan<char> * Span<byte> -> int
Public Overrides Function GetBytes (chars As ReadOnlySpan(Of Char), bytes As Span(Of Byte)) As Integer

Parameter

chars
ReadOnlySpan<Char>

Rentang karakter untuk dikodekan.

bytes
Span<Byte>

Rentang untuk berisi set byte yang dihasilkan.

Mengembalikan

Jumlah byte aktual yang ditulis ke dalam bytes.

Keterangan

Untuk menghitung ukuran yang 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.

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, gunakan Decoder atau yang Encoder dikembalikan oleh GetDecoder metode atau GetEncoder metode , masing-masing.

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.

Berlaku untuk

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

Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.cs
Sumber:
UTF8Encoding.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)]
[System.Security.SecurityCritical]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
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)>]
[<System.Security.SecurityCritical>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
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 byte aktual yang ditulis di lokasi yang ditunjukkan oleh bytes.

Atribut

Pengecualian

charsadalah null.

-atau-

bytesadalah null.

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

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, gunakan Decoder atau yang Encoder dikembalikan oleh GetDecoder metode atau GetEncoder metode , masing-masing.

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

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

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

charIndex
Int32

Indeks karakter pertama yang akan 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

charsadalah null.

-atau-

bytesadalah null.

charIndex atau charCount atau byteIndex kurang dari nol.

-atau-

charIndex dan charCount jangan menandakan rentang yang valid di 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 menggunakan GetBytes metode untuk mengodekan rentang karakter dari string dan menyimpan byte yang dikodekan dalam rentang elemen dalam array byte.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   String^ chars = "UTF8 Encoding Example";
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   int byteCount = utf8->GetByteCount( chars->ToCharArray(), 0, 13 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = utf8->GetBytes( chars, 0, 13, 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 UTF8EncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "UTF8 Encoding Example";
        
        UTF8Encoding utf8 = new UTF8Encoding();
        
        int byteCount = utf8.GetByteCount(chars.ToCharArray(), 0, 13);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf8.GetBytes(chars, 0, 13, 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 UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim bytes() As Byte
        Dim chars As String = "UTF8 Encoding Example"
        
        Dim utf8 As New UTF8Encoding()
        
        Dim byteCount As Integer = utf8.GetByteCount(chars.ToCharArray(), 0, 13)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf8.GetBytes(chars, 0, 13, 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 melemparkan ArgumentException pengecualian. 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, gunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode , masing-masing.

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

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

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

yang String berisi sekumpulan karakter yang akan dikodekan.

charIndex
Int32

Indeks karakter pertama yang akan 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-

bytesadalah null.

charIndex atau charCount atau byteIndex kurang dari nol.

-atau-

charIndex dan charCount jangan menandakan rentang yang valid di 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 menggunakan GetBytes metode untuk mengodekan rentang elemen dari array karakter Unicode dan menyimpan byte yang dikodekan dalam rentang 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'};
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   int byteCount = utf8->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = utf8->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 UTF8EncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        UTF8Encoding utf8 = new UTF8Encoding();
        
        int byteCount = utf8.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf8.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 UTF8EncodingExample
    
    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 utf8 As New UTF8Encoding()
        
        Dim byteCount As Integer = utf8.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = utf8.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 melemparkan ArgumentException pengecualian. 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, gunakan Decoder atau Encoder yang disediakan oleh GetDecoder metode atau GetEncoder metode , masing-masing.

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