Bagikan melalui


UnicodeEncoding.GetString(Byte[], Int32, Int32) Metode

Definisi

Mendekode rentang byte dari array byte menjadi string.

public:
 override System::String ^ GetString(cli::array <System::Byte> ^ bytes, int index, int count);
public override string GetString (byte[] bytes, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override string GetString (byte[] bytes, int index, int count);
override this.GetString : byte[] * int * int -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetString : byte[] * int * int -> string
Public Overrides Function GetString (bytes As Byte(), index As Integer, count As Integer) As String

Parameter

bytes
Byte[]

Array byte yang berisi urutan byte yang akan didekodekan.

index
Int32

Indeks byte pertama yang didekodekan.

count
Int32

Jumlah byte yang akan didekodekan.

Mengembalikan

Objek String yang berisi hasil pendekodean urutan byte yang ditentukan.

Atribut

Pengecualian

bytes adalah null (Nothing).

index atau count kurang dari nol.

-atau-

index dan count tidak menunjukkan rentang yang valid dalam bytes.

Deteksi kesalahan diaktifkan, dan bytes berisi urutan byte yang tidak valid.

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

-dan-

DecoderFallback diatur ke DecoderExceptionFallback.

Contoh

Contoh berikut menginisialisasi array dengan memanggil GetByteCount metode untuk menentukan dengan tepat berapa banyak byte yang diperlukan untuk string yang dikodekan lalu menambahkan ukuran tanda urutan byte (BOM). Contoh kemudian memanggil GetPreamble metode untuk menyimpan BOM ke array sebelum memanggil GetBytes metode untuk menyimpan byte yang dikodekan ke array. Contoh kemudian memanggil GetString metode untuk mendekode string.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      UTF8Encoding utf8 = new UTF8Encoding(true, true);

      String s = "It was the best of times, it was the worst of times...";

      // We need to dimension the array, since we'll populate it with 2 method calls.
      Byte[] bytes = new Byte[utf8.GetByteCount(s) + utf8.GetPreamble().Length];
      // Encode the string.
      Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length);
      utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length);

      // Decode the byte array.
      String s2 = utf8.GetString(bytes, 0, bytes.Length);
      Console.WriteLine(s2);
   }
}
// The example displays the following output:
//        ?It was the best of times, it was the worst of times...
Imports System.Text

Module Example
   Public Sub Main()
      Dim utf8 As New UTF8Encoding(True, True)

      Dim s As String = "It was the best of times, it was the worst of times..."

      ' We need to dimension the array, since we'll populate it with 2 method calls.
      Dim bytes(utf8.GetByteCount(s) + utf8.GetPreamble().Length - 1) As Byte
      ' Encode the string.
      Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length)
      utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length)

      ' Decode the byte array.
      Dim s2 As String = utf8.GetString(bytes, 0, bytes.Length)
      Console.WriteLine(s2)
   End Sub
End Module
' The example displays the following output:
'       ?It was the best of times, it was the worst of times...

Perhatikan bahwa dalam hal ini string yang didekodekan berbeda dari string asli, karena dimulai dengan tanda urutan byte 16-bit U+FFFD. Ini berarti bahwa kedua string akan dibandingkan sebagai tidak sama, dan bahwa jika string adalah output, BOM akan ditampilkan sebagai karakter pengganti "?". Untuk menghapus BOM di awal string, Anda dapat memanggil String.TrimStart metode .

Keterangan

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.

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, aplikasi harus menggunakan Decoder atau Encoder objek yang disediakan oleh GetDecoder atau GetEncoder metode , masing-masing.

Berlaku untuk

Lihat juga