Encoder.GetBytes Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta geçersiz kılındığında, bir karakter kümesini bayt dizisine kodlar.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean) |
Türetilmiş bir sınıfta geçersiz kılındığında, giriş karakterleri aralığındaki bir karakter kümesini ve iç arabellekteki karakterleri giriş bayt aralığında depolanan bir bayt dizisine kodlar. Parametre, dönüştürmeden sonra kodlayıcının iç durumunun temizlenip temizlenmeyeceğini gösterir. |
| GetBytes(Char*, Int32, Byte*, Int32, Boolean) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter işaretçisinde başlayan bir karakter kümesini ve iç arabellekteki karakterleri belirtilen bayt işaretçisinde başlayan bir bayt dizisine kodlar. Parametre, dönüştürmeden sonra kodlayıcının iç durumunun temizlenip temizlenmeyeceğini gösterir. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter dizisindeki bir karakter kümesini ve iç arabellekteki karakterleri belirtilen bayt dizisine kodlar. Parametre, dönüştürmeden sonra kodlayıcının iç durumunun temizlenip temizlenmeyeceğini gösterir. |
Açıklamalar
nesnesinin Encoder çağrısı arasında durum kaydettiğini GetBytesunutmayın. Uygulama bir veri akışıyla tamamlandığında, durum bilgilerinin temizlendiğinden flush ve kodlanmış baytların düzgün şekilde sonlandırıldığından emin olmak için true parametresini GetBytes son çağrıda olarak ayarlamalıdır. Bu ayar ile kodlayıcı, eşleşmeyen vekiller veya tamamlanmamış birleştirme dizileri gibi veri bloğunun sonundaki geçersiz baytları yoksayar ve iç arabelleği temizler.
Sonuçta elde edilen karakterlerin depolanmasını gerektiren GetBytes tam arabellek boyutunu hesaplamak için, uygulama kullanmalıdır GetByteCount.
olarak çağrılırsa GetBytesflushfalsekodlayıcı, veri bloğunun sonundaki baytları iç arabellekte depolar ve bunları bir sonraki kodlama işleminde kullanır. Uygulama, aynı blokta çağrı yapmadan hemen önce bir veri bloğu üzerinde çağrı GetByteCountGetBytes yapmalıdır, böylece önceki bloktaki tüm sondaki karakterler hesaplamaya dahil edilir.
Uygulamanız bir giriş akışının birçok kesimini dönüştürecekse yöntemini kullanmayı Convert göz önünde bulundurun. GetBytes çıkış arabelleği yeterince büyük değilse bir özel durum oluşturur, ancak Convert mümkün olduğunca fazla alan doldurur ve okunan karakterleri ve yazılan baytları döndürür. Ayrıca daha fazla açıklama için konuya bakın Encoding.GetBytes .
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
Türetilmiş bir sınıfta geçersiz kılındığında, giriş karakterleri aralığındaki bir karakter kümesini ve iç arabellekteki karakterleri giriş bayt aralığında depolanan bir bayt dizisine kodlar. Parametre, dönüştürmeden sonra kodlayıcının iç durumunun temizlenip temizlenmeyeceğini gösterir.
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
Parametreler
- chars
- ReadOnlySpan<Char>
Kodlanacak karakter aralığı.
- flush
- Boolean
true dönüştürmeden sonra kodlayıcının iç durumunu temizlemek için; aksi takdirde , false.
Döndürülenler
parametresi tarafından bytes belirtilen konumda yazılan gerçek bayt sayısı.
Şunlara uygulanır
GetBytes(Char*, Int32, Byte*, Int32, Boolean)
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
Önemli
Bu API, CLS uyumlu değildir.
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter işaretçisinde başlayan bir karakter kümesini ve iç arabellekteki karakterleri belirtilen bayt işaretçisinde başlayan bir bayt dizisine kodlar. Parametre, dönüştürmeden sonra kodlayıcının iç durumunun temizlenip temizlenmeyeceğini gösterir.
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
Parametreler
- chars
- Char*
Kodlanacak ilk karakterin işaretçisi.
- charCount
- Int32
Kodlanacak karakter sayısı.
- bytes
- Byte*
Elde edilen bayt dizisini yazmaya başlama konumuna yönelik bir işaretçi.
- byteCount
- Int32
Yazacak bayt sayısı üst sınırı.
- flush
- Boolean
true dönüştürmeden sonra kodlayıcının iç durumunu temizlemek için; aksi takdirde , false.
Döndürülenler
parametresi tarafından bytes belirtilen konumda yazılan gerçek bayt sayısı.
- Öznitelikler
Özel durumlar
charCount veya byteCount sıfırdan küçüktür.
byteCount elde edilen bayt sayısından küçüktür.
Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama)
-ve-
Fallback olarak ayarlanır EncoderExceptionFallback.
Şunlara uygulanır
GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean)
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
- Kaynak:
- Encoder.cs
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen karakter dizisindeki bir karakter kümesini ve iç arabellekteki karakterleri belirtilen bayt dizisine kodlar. Parametre, dönüştürmeden sonra kodlayıcının iç durumunun temizlenip temizlenmeyeceğini gösterir.
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
Parametreler
- chars
- Char[]
Kodlanması gereken karakter kümesini içeren karakter dizisi.
- charIndex
- Int32
Kodlanacak ilk karakterin dizini.
- charCount
- Int32
Kodlanacak karakter sayısı.
- bytes
- Byte[]
Elde edilen bayt dizisini içeren bayt dizisi.
- byteIndex
- Int32
Elde edilen bayt sırasını yazmaya başlanması gereken dizin.
- flush
- Boolean
true dönüştürmeden sonra kodlayıcının iç durumunu temizlemek için; aksi takdirde , false.
Döndürülenler
içine yazılan bytesgerçek bayt sayısı.
Özel durumlar
charIndex veya charCountbyteIndex sıfırdan küçüktür.
-veya-
charIndex ve charCount içinde charsgeçerli bir aralığı ifade etmeyin.
-veya-
byteIndex içinde bytesgeçerli bir dizin değil.
bytes dizinin sonundan byteIndex elde edilen baytları barındırmak için yeterli kapasiteye sahip değil.
Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama)
-ve-
Fallback olarak ayarlanır EncoderExceptionFallback.
Örnekler
Aşağıdaki örnek, bir karakter dizisindeki bir öğe aralığını kodlamayı ve kodlanmış baytları bayt dizisindeki bir öğe aralığında depolamayı gösterir. GetByteCount yöntemi, tarafından GetBytesgereken dizinin boyutunu belirlemek için kullanılır.
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]
'