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ınan, bir karakter kümesi bayt dizisi olarak kodlar.
Aşırı Yüklemeler
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean) |
Türetilen bir sınıfta geçersiz kılınan, giriş karakterleri span bir karakter kümesi ve iç arabellekte herhangi bir karakter giriş bayt aralığı depolanan bir bayt dizisi olarak kodlar. parametresi, dönüştürmeden sonra kodlayıcının iç durumunun temiz olup olmadığını gösterir. |
GetBytes(Char*, Int32, Byte*, Int32, Boolean) |
Türetilmiş bir sınıfta geçersiz kılınan, belirtilen karakter işaretçisinden başlayarak bir karakter kümesi ve iç arabellekte herhangi bir karakter, belirtilen bayt işaretçisinden başlayarak depolanan bir bayt dizisine kodlar. parametresi, dönüştürmeden sonra kodlayıcının iç durumunun temiz olup olmadığını gösterir. |
GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean) |
Türetilmiş bir sınıfta geçersiz kılınırsa, belirtilen karakter dizisinden bir karakter kümesini ve iç arabellekteki tüm karakterleri belirtilen bayt dizisine kodluyor. Bir parametre, dönüştürmeden sonra kodlayıcının iç durumunun temizlenip temizlenmeyeceğini gösterir. |
Açıklamalar
nesnesinin çağrıları Encoder arasında durumu kaydeden olduğunu GetBytes unutmayın. Uygulama bir veri akışıyla bittiğinde, durum bilgisinin boşaltılma ve kodlanmış baytların düzgün bir şekilde sonlandırılmaması için son çağrısında flush
true
GetBytes
parametresini olarak ayarlaması gerekir. Bu ayar ile kodlayıcı, eşleşmeyen vekiller veya tamamlanmamış birleştirme dizileri gibi veri bloğu sonundaki geçersiz baytları yok sayar ve iç arabelleği temizler.
Uygulama, elde edilen karakterlerin GetBytes
depolanacağı tam arabellek boyutunu hesaplamak için GetByteCount kullanmalıdır.
olarak GetBytes
ayarlanmış olarak flush
çağrılırsa, kodlayıcı veri bloğun sonundaki baytları iç arabellekte depolar ve sonraki kodlama false
işleminde kullanır. Uygulamanın aynı blokta çağrısından hemen önce bir veri bloğu üzerinde çağrısında olması gerekir; böylece önceki bloktan sonraki karakterler GetByteCount
GetBytes
hesaplamaya dahil edilir.
Uygulamanız bir giriş akışının birçok segmentini dönüştürecekse yöntemini kullanmayı göz önünde Convert bulundurabilirsiniz. GetBytes çıkış arabelleği yeterince büyük değilse ama mümkün olduğunca fazla alan dolduracak ve yazılan karakter ve baytları geri dönecekse Convert bir özel durum oluşturur. Ayrıca daha fazla Encoding.GetBytes açıklama için konu başlığına bakın.
GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)
Türetilen bir sınıfta geçersiz kılınan, giriş karakterleri span bir karakter kümesi ve iç arabellekte herhangi bir karakter giriş bayt aralığı depolanan bir bayt dizisi olarak kodlar. parametresi, dönüştürmeden sonra kodlayıcının iç durumunun temiz olup olmadığını 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>
Kodlanan 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 belirtilen konuma yazılan gerçek bayt bytes
sayısı.
Şunlara uygulanır
GetBytes(Char*, Int32, Byte*, Int32, Boolean)
Önemli
Bu API, CLS uyumlu değildir.
Türetilmiş bir sınıfta geçersiz kılınan, belirtilen karakter işaretçisinden başlayarak bir karakter kümesi ve iç arabellekte herhangi bir karakter, belirtilen bayt işaretçisinden başlayarak depolanan bir bayt dizisine kodlar. parametresi, dönüştürmeden sonra kodlayıcının iç durumunun temiz olup olmadığını 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);
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
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
Kodlanması gereken karakter sayısı.
- bytes
- Byte*
Elde edilen bayt dizisini yazmaya başlamak için konumun işaretçisi.
- byteCount
- Int32
Yazacak en fazla bayt sayısı.
- 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 belirtilen konuma yazılan gerçek bayt bytes
sayısı.
- Öznitelikler
Özel durumlar
charCount
veya byteCount
sıfırdan küçük.
byteCount
, sonuçta elde edilen bayt sayısından küçük.
Bir geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama )
-and-
Fallback , olarak EncoderExceptionFallback ayarlanır.
Şunlara uygulanır
GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean)
Türetilmiş bir sınıfta geçersiz kılınırsa, belirtilen karakter dizisinden bir karakter kümesini ve iç arabellekteki tüm karakterleri belirtilen bayt dizisine kodluyor. Bir 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 dizisini içeren karakter dizisi.
- charIndex
- Int32
Kodlanan ilk karakterin dizini.
- charCount
- Int32
Kodlanması gereken karakter sayısı.
- bytes
- Byte[]
Elde edilen bayt dizisini içeren bayt dizisi.
- byteIndex
- Int32
Elde edilen bayt dizisinin başlaması için kullanılacak 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
İçine yazılan gerçek bayt sayısı bytes
.
Özel durumlar
charIndex
veya charCount
veya byteIndex
sıfırdan küçük.
-veya-
charIndex
ve charCount
içinde geçerli bir Aralık göstermiyor chars
.
-veya-
byteIndex
, içinde geçerli bir dizin değil bytes
.
bytes
byteIndex
, sonuçta elde edilen baytlara uyum sağlamak için dizinin sonuna kadar kapasiteye sahip değildir.
Geri dönüş gerçekleşti (daha fazla bilgi için bkz. .net 'Te karakter kodlama)
'
Fallback , olarak ayarlanır EncoderExceptionFallback .
Örnekler
Aşağıdaki örnek, bir dizi öğenin bir karakter dizisinden nasıl kodlanacağını ve kodlanmış baytları bayt dizisindeki bir dizi öğe içinde depolamayı gösterir. GetByteCountYöntemi, tarafından gereken dizinin boyutunu belirlemekte kullanılır GetBytes .
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]
'