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
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean) |
Türetilmiş bir sınıfta geçersiz kılındığında, giriş karakterleri aralığındaki bir dizi karakteri ve iç arabellekteki karakterleri giriş bayt yayılması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ındaki durumu kaydettiğini GetBytesunutmayın. Uygulama bir veri akışıyla tamamlandığında, durum bilgilerinin boşaltıldığından flush
ve kodlanmış baytların düzgün şekilde sonlandırıldığından emin olmak için GetBytes
parametresini true
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 flush
ayarlanırsa GetBytes
false
kodlayıcı, veri bloğunun sonundaki baytları bir iç arabellekte depolar ve bunları bir sonraki kodlama işleminde kullanır. Uygulamanın aynı blokta çağrı yapmadan hemen önce bir veri bloğu üzerinde çağrısı GetByteCount
GetBytes
yapması gerekir, böylece önceki bloktaki tüm son 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. Daha fazla yorum için konuya da bakın Encoding.GetBytes .
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)
- 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 dizi karakteri ve iç arabellekteki karakterleri giriş bayt yayılması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>
Kodlamak için bir 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
Ö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*
Kodlanan ilk karakterin işaretçisi.
- charCount
- Int32
Kodlanacak karakter sayısı.
- bytes
- Byte*
Elde edilen bayt sırasını yazmaya başlayabileceğiniz konumun işaretçisi.
- 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.
Bir 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
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
Kodlanan 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şlayabileceğiniz 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 bytes
yazılan gerçek bayt sayısı.
Özel durumlar
charIndex
veya charCount
byteIndex
sıfırdan küçüktür.
-veya-
charIndex
ve charCount
içinde chars
geçerli bir aralığı ifade etmeyin.
-veya-
byteIndex
içinde bytes
geçerli bir dizin değil.
bytes
, sonuçta elde edilen baytları barındırmak için dizinin sonuna kadar yeterli kapasiteye byteIndex
sahip değildir.
Bir 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 öğe aralığını kodlamayı ve kodlanmış baytları bayt dizisindeki bir öğe aralığında depolamayı gösterir. yöntemi, GetByteCount tarafından gereken dizinin boyutunu belirlemek için GetByteskullanılır.
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]
'