Encoder.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.
Ketika ditimpa di kelas turunan, mengodekan sekumpulan karakter ke dalam urutan byte.
Overload
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean) |
Ketika ditimpa di kelas turunan, mengodekan sekumpulan karakter dalam rentang karakter input dan karakter apa pun di buffer internal ke dalam urutan byte yang disimpan dalam rentang byte input. Parameter menunjukkan apakah akan menghapus status internal encoder setelah konversi. |
GetBytes(Char*, Int32, Byte*, Int32, Boolean) |
Saat ditimpa dalam kelas turunan, mengodekan sekumpulan karakter yang dimulai pada penunjuk karakter yang ditentukan dan karakter apa pun di buffer internal ke dalam urutan byte yang disimpan mulai dari penunjuk byte yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal encoder setelah konversi. |
GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean) |
Saat ditimpa di kelas turunan, mengodekan sekumpulan karakter dari array karakter yang ditentukan dan karakter apa pun dalam buffer internal ke dalam array byte yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal encoder setelah konversi. |
Keterangan
Ingatlah bahwa Encoder objek menyimpan status antara panggilan ke GetBytes. Ketika aplikasi selesai dengan aliran data, aplikasi harus mengatur flush
parameter ke true
dalam panggilan terakhir ke GetBytes
untuk memastikan bahwa informasi status dihapus dan bahwa byte yang dikodekan dihentikan dengan benar. Dengan pengaturan ini, encoder mengabaikan byte yang tidak valid di akhir blok data, seperti pengganti yang tidak cocok atau urutan penggabungan yang tidak lengkap, dan menghapus buffer internal.
Untuk menghitung ukuran buffer yang tepat yang GetBytes
mengharuskan untuk menyimpan karakter yang dihasilkan, aplikasi harus menggunakan GetByteCount.
Jika GetBytes
dipanggil dengan flush
diatur ke false
, encoder menyimpan byte berikutnya di akhir blok data dalam buffer internal dan menggunakannya dalam operasi pengodean berikutnya. Aplikasi harus memanggil GetByteCount
blok data segera sebelum memanggil GetBytes
pada blok yang sama, sehingga setiap karakter berikutnya dari blok sebelumnya disertakan dalam perhitungan.
Jika aplikasi Anda mengonversi banyak segmen aliran input, pertimbangkan untuk menggunakan metode .Convert GetBytes akan melemparkan pengecualian jika buffer output tidak cukup besar, tetapi Convert akan mengisi ruang sebanyak mungkin dan mengembalikan karakter yang dibaca dan byte yang ditulis. Encoding.GetBytes Lihat juga topik untuk komentar lainnya.
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)
- Sumber:
- Encoder.cs
- Sumber:
- Encoder.cs
- Sumber:
- Encoder.cs
Ketika ditimpa di kelas turunan, mengodekan sekumpulan karakter dalam rentang karakter input dan karakter apa pun di buffer internal ke dalam urutan byte yang disimpan dalam rentang byte input. Parameter menunjukkan apakah akan menghapus status internal encoder setelah konversi.
public:
virtual int GetBytes(ReadOnlySpan<char> chars, Span<System::Byte> bytes, bool flush);
public virtual int GetBytes (ReadOnlySpan<char> chars, Span<byte> bytes, bool flush);
abstract member GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
override this.GetBytes : ReadOnlySpan<char> * Span<byte> * bool -> int
Public Overridable Function GetBytes (chars As ReadOnlySpan(Of Char), bytes As Span(Of Byte), flush As Boolean) As Integer
Parameter
- chars
- ReadOnlySpan<Char>
Rentang karakter untuk dikodekan.
- flush
- Boolean
true
untuk menghapus status internal encoder setelah konversi; jika tidak, false
.
Mengembalikan
Jumlah byte aktual yang ditulis di lokasi yang ditunjukkan oleh bytes
parameter .
Berlaku untuk
GetBytes(Char*, Int32, Byte*, Int32, Boolean)
- Sumber:
- Encoder.cs
- Sumber:
- Encoder.cs
- Sumber:
- Encoder.cs
Penting
API ini bukan kompatibel CLS.
Saat ditimpa dalam kelas turunan, mengodekan sekumpulan karakter yang dimulai pada penunjuk karakter yang ditentukan dan karakter apa pun di buffer internal ke dalam urutan byte yang disimpan mulai dari penunjuk byte yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal encoder setelah konversi.
public:
virtual int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
public virtual int GetBytes (char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetBytes (char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public virtual int GetBytes (char* chars, int charCount, byte* bytes, int byteCount, bool flush);
[<System.CLSCompliant(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
[<System.Security.SecurityCritical>]
abstract member GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> int
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int * bool -> 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.
- flush
- Boolean
true
untuk menghapus status internal encoder setelah konversi; jika tidak, false
.
Mengembalikan
Jumlah byte aktual yang ditulis di lokasi yang ditunjukkan oleh bytes
parameter .
- Atribut
Pengecualian
charCount
atau byteCount
kurang dari nol.
byteCount
kurang dari jumlah byte yang dihasilkan.
Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)
-dan-
Fallback diatur ke EncoderExceptionFallback.
Berlaku untuk
GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean)
- Sumber:
- Encoder.cs
- Sumber:
- Encoder.cs
- Sumber:
- Encoder.cs
Saat ditimpa di kelas turunan, mengodekan sekumpulan karakter dari array karakter yang ditentukan dan karakter apa pun dalam buffer internal ke dalam array byte yang ditentukan. Parameter menunjukkan apakah akan menghapus status internal encoder setelah konversi.
public:
abstract int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex, bool flush);
public abstract int GetBytes (char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush);
abstract member GetBytes : char[] * int * int * byte[] * int * bool -> int
Public MustOverride Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer, flush As Boolean) 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.
- flush
- Boolean
true
untuk menghapus status internal encoder setelah konversi; jika tidak, false
.
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
.
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-
Fallback diatur ke EncoderExceptionFallback.
Contoh
Contoh berikut menunjukkan cara mengodekan berbagai elemen dari array karakter dan menyimpan byte yang dikodekan dalam berbagai elemen dalam array byte. Metode GetByteCount ini digunakan untuk menentukan ukuran array yang diperlukan oleh GetBytes.
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'};
Encoder^ uniEncoder = Encoding::Unicode->GetEncoder();
int byteCount = uniEncoder->GetByteCount( chars, 0, chars->Length, true );
bytes = gcnew array<Byte>(byteCount);
int bytesEncodedCount = uniEncoder->GetBytes( chars, 0, chars->Length, bytes, 0, true );
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();
}
/* This code example produces the following output.
8 bytes used to encode characters.
Encoded bytes: [160][3][163][3][166][3][169][3]
*/
using System;
using System.Text;
class EncoderExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
Encoder uniEncoder = Encoding.Unicode.GetEncoder();
int byteCount = uniEncoder.GetByteCount(chars, 0, chars.Length, true);
bytes = new Byte[byteCount];
int bytesEncodedCount = uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, true);
Console.WriteLine(
"{0} bytes used to encode characters.", bytesEncodedCount
);
Console.Write("Encoded bytes: ");
foreach (Byte b in bytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
}
}
/* This code example produces the following output.
8 bytes used to encode characters.
Encoded bytes: [35][0][37][0][160][3][163][3]
*/
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class EncoderExample
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 uniEncoder As Encoder = Encoding.Unicode.GetEncoder()
Dim byteCount As Integer = _
uniEncoder.GetByteCount(chars, 0, chars.Length, True)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = _
uniEncoder.GetBytes(chars, 0, chars.Length, bytes, 0, True)
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
'This code example produces the following output.
'8 bytes used to encode characters.
'Encoded bytes: [35][0][37][0][160][3][163][3]
'