UnicodeEncoding.GetBytes Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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
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
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
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.