Encoder.GetBytes Yöntem

Tanım

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

bytes
Span<Byte>

Elde edilen bayt dizisini yazmak için bir 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

Int32

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

Int32

Parametresi tarafından belirtilen konuma yazılan gerçek bayt bytes sayısı.

Öznitelikler

Özel durumlar

chars is null ( Nothing ).

-veya-

bytes is null ( Nothing ).

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

Int32

İçine yazılan gerçek bayt sayısı bytes .

Özel durumlar

charsnull( Nothing ).

-veya-

bytesnull( Nothing ).

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 .

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

Şunlara uygulanır