UTF8Encoding.GetChars 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.
Mendekode urutan byte menjadi satu set karakter.
Overload
GetChars(ReadOnlySpan<Byte>, Span<Char>) |
Mendekode rentang byte yang ditentukan ke dalam rentang karakter yang ditentukan. |
GetChars(Byte*, Int32, Char*, Int32) |
Mendekode urutan byte yang dimulai pada penunjuk byte yang ditentukan ke dalam sekumpulan karakter yang disimpan dimulai pada penunjuk karakter yang ditentukan. |
GetChars(Byte[], Int32, Int32, Char[], Int32) |
Mendekode urutan byte dari array byte yang ditentukan ke dalam array karakter yang ditentukan. |
GetChars(ReadOnlySpan<Byte>, Span<Char>)
- Sumber:
- UTF8Encoding.cs
- Sumber:
- UTF8Encoding.cs
- Sumber:
- UTF8Encoding.cs
Mendekode rentang byte yang ditentukan ke dalam rentang karakter yang ditentukan.
public:
override int GetChars(ReadOnlySpan<System::Byte> bytes, Span<char> chars);
public override int GetChars (ReadOnlySpan<byte> bytes, Span<char> chars);
override this.GetChars : ReadOnlySpan<byte> * Span<char> -> int
Public Overrides Function GetChars (bytes As ReadOnlySpan(Of Byte), chars As Span(Of Char)) As Integer
Parameter
- bytes
- ReadOnlySpan<Byte>
Rentang yang berisi byte untuk didekodekan.
Mengembalikan
Jumlah karakter aktual yang ditulis ke dalam chars
.
Keterangan
Untuk menghitung ukuran persis yang diperlukan oleh GetChars untuk menyimpan karakter yang dihasilkan, panggil GetCharCount metode . Untuk menghitung ukuran maksimum, panggil GetMaxCharCount metode . Metode ini GetCharCount umumnya mengalokasikan lebih sedikit memori, sementara GetMaxCharCount 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.
Jika kumpulan byte yang akan didekodekan mencakup tanda urutan byte (BOM) dan rentang byte dikembalikan dengan metode jenis sadar non-BOM, karakter U+FFFE
disertakan dalam rentang karakter yang dikembalikan oleh metode ini. Anda dapat menghapusnya dengan memanggil String.TrimStart metode .
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 objek yang disediakan oleh GetDecoder metode atau GetEncoder metode , masing-masing.
Berlaku untuk
GetChars(Byte*, Int32, Char*, Int32)
- Sumber:
- UTF8Encoding.cs
- Sumber:
- UTF8Encoding.cs
- Sumber:
- UTF8Encoding.cs
Penting
API ini bukan kompatibel CLS.
Mendekode urutan byte yang dimulai pada penunjuk byte yang ditentukan ke dalam sekumpulan karakter yang disimpan dimulai pada penunjuk karakter yang ditentukan.
public:
override int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
Parameter
- bytes
- Byte*
Penunjuk ke byte pertama yang didekodekan.
- byteCount
- Int32
Jumlah byte yang akan didekodekan.
- chars
- Char*
Penunjuk ke lokasi untuk mulai menulis sekumpulan karakter yang dihasilkan.
- charCount
- Int32
Jumlah maksimum karakter yang akan ditulis.
Mengembalikan
Jumlah karakter aktual yang ditulis di lokasi yang ditunjukkan oleh chars
.
- Atribut
Pengecualian
byteCount
atau charCount
kurang dari nol.
Deteksi kesalahan diaktifkan, dan bytes
berisi urutan byte yang tidak valid.
-atau-
charCount
kurang dari jumlah karakter yang dihasilkan.
Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)
-dan-
DecoderFallback diatur ke DecoderExceptionFallback.
Keterangan
Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetChars untuk menyimpan karakter yang dihasilkan, panggil GetCharCount metode . Untuk menghitung ukuran array maksimum, panggil GetMaxCharCount metode . Metode ini GetCharCount umumnya mengalokasikan lebih sedikit memori, sementara GetMaxCharCount 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.
Jika rentang byte yang akan didekodekan menyertakan tanda urutan byte (BOM) dan array byte dikembalikan oleh metode jenis sadar non-BOM, karakter U+FFFE disertakan dalam array karakter yang dikembalikan oleh metode ini. Anda dapat menghapusnya dengan memanggil String.TrimStart metode .
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 objek yang disediakan oleh GetDecoder metode atau GetEncoder metode , masing-masing.
Lihat juga
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)
Berlaku untuk
GetChars(Byte[], Int32, Int32, Char[], Int32)
- Sumber:
- UTF8Encoding.cs
- Sumber:
- UTF8Encoding.cs
- Sumber:
- UTF8Encoding.cs
Mendekode urutan byte dari array byte yang ditentukan ke dalam array karakter yang ditentukan.
public:
override int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public override int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
override this.GetChars : byte[] * int * int * char[] * int -> int
Public Overrides Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer
Parameter
- bytes
- Byte[]
Array byte yang berisi urutan byte yang akan didekodekan.
- byteIndex
- Int32
Indeks byte pertama yang didekodekan.
- byteCount
- Int32
Jumlah byte yang akan didekodekan.
- chars
- Char[]
Array karakter untuk berisi sekumpulan karakter yang dihasilkan.
- charIndex
- Int32
Indeks untuk mulai menulis sekumpulan karakter yang dihasilkan.
Mengembalikan
Jumlah karakter aktual yang ditulis ke dalam chars
.
Pengecualian
byteIndex
atau byteCount
atau charIndex
kurang dari nol.
-atau-
byteindex
dan byteCount
tidak menunjukkan rentang yang valid dalam bytes
.
-atau-
charIndex
bukan indeks yang valid di chars
.
Deteksi kesalahan diaktifkan, dan bytes
berisi urutan byte yang tidak valid.
-atau-
chars
tidak memiliki kapasitas yang cukup dari charIndex
hingga akhir array untuk mengakomodasi karakter yang dihasilkan.
Fallback terjadi (untuk informasi selengkapnya, lihat Pengodean Karakter di .NET)
-dan-
DecoderFallback diatur ke DecoderExceptionFallback.
Contoh
Contoh berikut menggunakan GetChars metode untuk mendekode rentang elemen dalam array byte dan menyimpan hasilnya dalam array karakter.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Char>^chars;
array<Byte>^bytes = {85,84,70,56,32,69,110,99,111,100,105,110,103,32,69,120,97,109,112,108,101};
UTF8Encoding^ utf8 = gcnew UTF8Encoding;
int charCount = utf8->GetCharCount( bytes, 2, 13 );
chars = gcnew array<Char>(charCount);
int charsDecodedCount = utf8->GetChars( bytes, 2, 13, chars, 0 );
Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
Console::Write( "Decoded chars: " );
IEnumerator^ myEnum = chars->GetEnumerator();
while ( myEnum->MoveNext() )
{
Char c = safe_cast<Char>(myEnum->Current);
Console::Write( "[{0}]", c.ToString() );
}
Console::WriteLine();
}
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Char[] chars;
Byte[] bytes = new Byte[] {
85, 84, 70, 56, 32, 69, 110,
99, 111, 100, 105, 110, 103, 32,
69, 120, 97, 109, 112, 108, 101
};
UTF8Encoding utf8 = new UTF8Encoding();
int charCount = utf8.GetCharCount(bytes, 2, 13);
chars = new Char[charCount];
int charsDecodedCount = utf8.GetChars(bytes, 2, 13, chars, 0);
Console.WriteLine(
"{0} characters used to decode bytes.", charsDecodedCount
);
Console.Write("Decoded chars: ");
foreach (Char c in chars) {
Console.Write("[{0}]", c);
}
Console.WriteLine();
}
}
Imports System.Text
Class UTF8EncodingExample
Public Shared Sub Main()
Dim chars() As Char
Dim bytes() As Byte = { _
85, 84, 70, 56, 32, 69, 110, _
99, 111, 100, 105, 110, 103, 32, _
69, 120, 97, 109, 112, 108, 101 _
}
Dim utf8 As New UTF8Encoding()
Dim charCount As Integer = utf8.GetCharCount(bytes, 2, 13)
chars = New Char(charCount - 1) {}
Dim charsDecodedCount As Integer = utf8.GetChars(bytes, 2, 13, chars, 0)
Console.WriteLine("{0} characters used to decode bytes.", charsDecodedCount)
Console.Write("Decoded chars: ")
Dim c As Char
For Each c In chars
Console.Write("[{0}]", c)
Next c
Console.WriteLine()
End Sub
End Class
Keterangan
Untuk menghitung ukuran array yang tepat yang diperlukan oleh GetChars untuk menyimpan karakter yang dihasilkan, panggil GetCharCount metode . Untuk menghitung ukuran array maksimum, panggil GetMaxCharCount metode . Metode ini GetCharCount umumnya mengalokasikan lebih sedikit memori, sementara GetMaxCharCount 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.
Jika rentang byte yang akan didekodekan menyertakan tanda urutan byte (BOM) dan array byte dikembalikan oleh metode jenis sadar non-BOM, karakter U+FFFE disertakan dalam array karakter yang dikembalikan oleh metode ini. Anda dapat menghapusnya dengan memanggil String.TrimStart metode .
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.
Lihat juga
- GetCharCount(Byte[], Int32, Int32)
- GetMaxCharCount(Int32)
- GetDecoder()
- GetString(Byte[], Int32, Int32)