Aracılığıyla paylaş


Encoder.GetBytes Yöntem

Tanım

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 GetBytesfalsekodlayı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ı GetByteCountGetBytes 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ığı.

bytes
Span<Byte>

Elde edilen bayt sırasının yazılması için bayt 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

chars is null (Nothing).

-veya-

bytes is null (Nothing).

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 bytesyazılan gerçek bayt sayısı.

Özel durumlar

chars is null (Nothing).

-veya-

bytes is null (Nothing).

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 , 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]
'

Şunlara uygulanır