UnicodeEncoding.GetString(Byte[], Int32, Int32) Yöntem

Tanım

Bayt dizisinden dizeye bayt aralığının kodunu çözer.

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

Parametreler

bytes
Byte[]

Kodunu çözmek için bayt sırasını içeren bayt dizisi.

index
Int32

Kodunu çözmek için ilk bayt dizini.

count
Int32

Kodu çözecek bayt sayısı.

Döndürülenler

String Belirtilen bayt dizisinin kodunu çözmenin sonuçlarını içeren bir nesne.

Öznitelikler

Özel durumlar

bytes is null (Nothing).

index veya count sıfırdan küçüktür.

-veya-

index ve count içinde bytesgeçerli bir aralığı ifade etmeyin.

Hata algılama etkinleştirildi ve bytes geçersiz bir bayt dizisi içeriyor.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama)

-ve-

DecoderFallback olarak ayarlanır DecoderExceptionFallback.

Örnekler

Aşağıdaki örnek, kodlanmış bir dize için tam olarak kaç bayt gerektiğini belirlemek için yöntemini çağırarak GetByteCount ve ardından bayt sırası işaretinin (BOM) boyutunu ekleyerek bir dizi başlatır. Örnek, kodlanmış baytları diziye depolamak için yöntemini çağırmadan GetBytes önce diziye bom depolama yöntemini çağırırGetPreamble. Örnek daha sonra dizenin GetString kodunu çözmek için yöntemini çağırır.

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

Bu durumda, kodu çözülen dizenin özgün dizeden farklı olduğunu unutmayın, çünkü 16 bit bayt sırası işareti U+FFFD ile başlar. Bu, iki dizenin eşit olmayan olarak karşılaştırılacağı ve dize çıktıysa, ürün reçetesinin "?" değiştirme karakteri olarak görüntüleneceği anlamına gelir. Dizenin başındaki BOM'u kaldırmak için yöntemini çağırabilirsiniz String.TrimStart .

Açıklamalar

Hata algılama ile geçersiz bir dizi, bu yöntemin bir ArgumentExceptionoluşturmasına neden olur. Hata algılama olmadan geçersiz diziler yoksayılır ve özel durum oluşmaz.

Çözülecek bayt aralığı bayt sırası işaretini (BOM) içeriyorsa ve bayt dizisi bom tanımayan bir tür yöntemi tarafından döndürüldüyse, U+FFFE karakteri bu yöntem tarafından döndürülen karakter dizisine eklenir. yöntemini çağırarak String.TrimStart kaldırabilirsiniz.

Bir akıştan okunan veriler gibi dönüştürülecek veriler yalnızca sıralı bloklarda kullanılabilir. Bu durumda veya veri miktarı daha küçük bloklara bölünmesi gereken kadar büyükse, uygulama sırasıyla veya yöntemi tarafından GetDecoder sağlanan veya GetEncoder nesnesini kullanmalıdırDecoder.Encoder

Şunlara uygulanır

Ayrıca bkz.