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.

C#
public virtual int GetBytes (ReadOnlySpan<char> chars, Span<byte> bytes, bool flush);

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

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

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.

C#
[System.CLSCompliant(false)]
public virtual int GetBytes (char* chars, int charCount, byte* bytes, int byteCount, bool flush);
C#
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public virtual int GetBytes (char* chars, int charCount, byte* bytes, int byteCount, bool flush);
C#
[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);

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

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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.

C#
public abstract int GetBytes (char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex, bool flush);

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.

C#
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]

*/

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0