ASCIIEncoding.GetBytes Yöntem

Tanım

Bir karakter kümesini bayt dizisine kodlar.

Aşırı Yüklemeler

GetBytes(ReadOnlySpan<Char>, Span<Byte>)

Belirtilen karakter aralığını belirtilen bayt aralığına kodlar.

GetBytes(Char*, Int32, Byte*, Int32)

Belirtilen karakter işaretçisinde başlayan bir karakter kümesini, belirtilen bayt işaretçisinde başlayan bir bayt dizisine kodlar.

GetBytes(Char[], Int32, Int32, Byte[], Int32)

Belirtilen karakter dizisinden bir dizi karakteri belirtilen bayt dizisine kodlar.

GetBytes(String, Int32, Int32, Byte[], Int32)

Belirtilen karakter kümesinden belirtilen String bayt dizisine kodlar.

GetBytes(ReadOnlySpan<Char>, Span<Byte>)

Belirtilen karakter aralığını belirtilen bayt aralığına kodlar.

public:
 override int GetBytes(ReadOnlySpan<char> chars, Span<System::Byte> bytes);
public override int GetBytes (ReadOnlySpan<char> chars, Span<byte> bytes);
override this.GetBytes : ReadOnlySpan<char> * Span<byte> -> int
Public Overrides Function GetBytes (chars As ReadOnlySpan(Of Char), bytes As Span(Of Byte)) As Integer

Parametreler

chars
ReadOnlySpan<Char>

Karakter kodlamaya yayılır.

bytes
Span<Byte>

Elde edilen bayt kümesini içeren yayılma alanı.

Döndürülenler

Int32

içine bytesyazılan gerçek bayt sayısı.

Açıklamalar

Sonucu elde edilen baytları depolamak için tarafından GetBytes gereken tam boyutu hesaplamak için kullanın GetByteCount. En büyük boyutu hesaplamak için kullanın GetMaxByteCount. GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

Akıştan okunan veriler gibi dönüştürülecek veriler yalnızca sıralı bloklarda kullanılabilir. Bu durumda veya veri miktarı daha küçük bloklara bölünmesi gereken kadar büyükse, Decoder sırasıyla yöntemi veya yöntemi tarafından GetDecoder sağlanan veya Encoder GetEncoder kullanın.

ASCIIEncoding hata algılama sağlamaz. değerinden U+007F büyük herhangi bir Unicode karakteri ASCII soru işareti ("?") olarak kodlanır.

Dikkat

Güvenlik nedeniyle , UnicodeEncodingveya UTF32Encoding kullanmanız UTF8Encodingve hata algılamayı etkinleştirmeniz gerekir.

Şunlara uygulanır

GetBytes(Char*, Int32, Byte*, Int32)

Önemli

Bu API, CLS uyumlu değildir.

CLS uyumlu alternatif
System.Text.ASCIIEncoding.GetBytes(Char[], Int32, Int32, Byte[], Int32)

Belirtilen karakter işaretçisinde başlayan bir karakter kümesini, belirtilen bayt işaretçisinde başlayan bir bayt dizisine kodlar.

public:
 override int GetBytes(char* chars, int charCount, System::Byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int

Parametreler

chars
Char*

Kodlanacak ilk karakterin işaretçisi.

charCount
Int32

Kodlanacak karakter sayısı.

bytes
Byte*

Elde edilen bayt sırasını yazmaya başlanması gereken konuma yönelik bir işaretçi.

byteCount
Int32

Yazacak en fazla bayt sayısı.

Döndürülenler

Int32

tarafından bytesbelirtilen konumda yazılan gerçek bayt sayısı.

Öznitelikler

Özel durumlar

chars, null değeridir.

-veya- bytes, null değeridir.

charCount veya byteCount sıfırdan küçüktür.

byteCount elde edilen bayt sayısından küçüktür.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama) -ve- EncoderFallback olarak ayarlanır EncoderExceptionFallback.

Açıklamalar

Uygulama, sonuç baytlarını depolamak için gereken GetBytes dizi boyutunu tam olarak hesaplamak için kullanır GetByteCount. En büyük dizi boyutunu hesaplamak için uygulamanın kullanması GetMaxByteCountgerekir. GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

Akıştan okunan veriler gibi dönüştürülecek veriler yalnızca sıralı bloklarda kullanılabilir. Bu durumda veya veri miktarı daha küçük bloklara bölünmesi gereken kadar büyükse, uygulama sırasıyla yöntemi veya GetEncoder yöntemi tarafından GetDecoder sağlanan öğesini Encoder kullanmalıdırDecoder.

ASCIIEncoding hata algılama sağlamaz. U+007F'den büyük herhangi bir Unicode karakteri ASCII soru işaretine ("?") çevrilir.

Dikkat

Güvenlik nedeniyle, uygulamanızın , UnicodeEncodingveya UTF32Encoding kullanması UTF8Encodingve hata algılamayı etkinleştirmesi önerilir.

Ayrıca bkz.

Şunlara uygulanır

GetBytes(Char[], Int32, Int32, Byte[], Int32)

Belirtilen karakter dizisinden bir dizi karakteri belirtilen bayt dizisine kodlar.

public:
 override int GetBytes(cli::array <char> ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes (char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : char[] * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As Char(), charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

Parametreler

chars
Char[]

Kodlanması gereken karakter kümesini içeren karakter dizisi.

charIndex
Int32

Kodlanacak 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şlanması gereken dizin.

Döndürülenler

Int32

içine bytesyazılan gerçek bayt sayısı.

Özel durumlar

chars, null değeridir.

-veya- bytes, null değeridir.

charIndex veya charCount byteIndex 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 dizinin sonundan elde edilen baytları barındırmak için yeterli kapasiteye byteIndex sahip değildir.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama) -ve- EncoderFallback olarak ayarlanır EncoderExceptionFallback.

Örnekler

Aşağıdaki örnekte, bir dizedeki karakter aralığını kodlamak ve kodlanmış karakterleri bayt dizisindeki bir öğe aralığında depolamak için yönteminin nasıl kullanılacağı GetBytes gösterilmektedir.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^bytes;
   String^ chars = "ASCII Encoding Example";
   ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
   int byteCount = ascii->GetByteCount( chars->ToCharArray(), 6, 8 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = ascii->GetBytes( chars, 6, 8, bytes, 0 );
   Console::WriteLine( " {0} bytes used to encode string.", 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();
}
using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        Byte[] bytes;
        String chars = "ASCII Encoding Example";
        
        ASCIIEncoding ascii = new ASCIIEncoding();
        
        int byteCount = ascii.GetByteCount(chars.ToCharArray(), 6, 8);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = ascii.GetBytes(chars, 6, 8, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode string.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text

Class ASCIIEncodingExample
   
    Public Shared Sub Main()
        Dim bytes() As Byte
        Dim chars As String = "ASCII Encoding Example"

        Dim ascii As New ASCIIEncoding()

        Dim byteCount As Integer = ascii.GetByteCount(chars.ToCharArray(), 6, 8)
        bytes = New Byte(byteCount - 1) {}
        Dim bytesEncodedCount As Integer = ascii.GetBytes(chars, 6, 8, bytes, 0)

        Console.WriteLine("{0} bytes used to encode string.", 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

Açıklamalar

Uygulama, sonuç baytlarını depolamak için gereken GetBytes dizi boyutunu tam olarak hesaplamak için kullanır GetByteCount. En büyük dizi boyutunu hesaplamak için uygulamanın kullanması GetMaxByteCountgerekir. GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

Akıştan okunan veriler gibi dönüştürülecek veriler yalnızca sıralı bloklarda kullanılabilir. Bu durumda veya veri miktarı daha küçük bloklara bölünmesi gereken kadar büyükse, uygulama sırasıyla yöntemi veya GetEncoder yöntemi tarafından GetDecoder sağlanan öğesini Encoder kullanmalıdırDecoder.

ASCIIEncoding hata algılama sağlamaz. U+007F'den büyük herhangi bir Unicode karakteri ASCII soru işareti ("?") olarak kodlanır.

Dikkat

Güvenlik nedeniyle, uygulamanızın , UnicodeEncodingveya UTF32Encoding kullanması UTF8Encodingve hata algılamayı etkinleştirmesi önerilir.

Ayrıca bkz.

Şunlara uygulanır

GetBytes(String, Int32, Int32, Byte[], Int32)

Belirtilen karakter kümesinden belirtilen String bayt dizisine kodlar.

public:
 override int GetBytes(System::String ^ chars, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes (string chars, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (chars As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer

Parametreler

chars
String

String Kodlanması gereken karakter kümesini içeren.

charIndex
Int32

Kodlanacak 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şlanması gereken dizin.

Döndürülenler

Int32

içine bytesyazılan gerçek bayt sayısı.

Özel durumlar

s, null değeridir.

-veya- bytes, null değeridir.

charIndex veya charCount byteIndex 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 dizinin sonundan elde edilen baytları barındırmak için yeterli kapasiteye byteIndex sahip değildir.

Geri dönüş oluştu (daha fazla bilgi için bkz. .NET'te Karakter Kodlama) -ve- EncoderFallback olarak ayarlanır EncoderExceptionFallback.

Örnekler

Aşağıdaki örnekte, bir Unicode karakter dizisindeki bir öğe aralığını kodlamak ve kodlanmış baytları bayt dizisindeki bir öğe aralığında depolamak için yönteminin nasıl kullanılacağı GetBytes gösterilmektedir.

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'};
   ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
   int byteCount = ascii->GetByteCount( chars, 1, 2 );
   bytes = gcnew array<Byte>(byteCount);
   int bytesEncodedCount = ascii->GetBytes( chars, 1, 2, bytes, 0 );
   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();
}
using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        Byte[] bytes;
        // Unicode characters.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };
        
        ASCIIEncoding ascii = new ASCIIEncoding();
        
        int byteCount = ascii.GetByteCount(chars, 1, 2);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = ascii.GetBytes(chars, 1, 2, bytes, 0);
        
        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class ASCIIEncodingExample
    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 ascii As New ASCIIEncoding()

        Dim byteCount As Integer = ascii.GetByteCount(chars, 1, 2)
        bytes = New Byte(byteCount - 1){}
        Dim bytesEncodedCount As Integer = ascii.GetBytes(chars, 1, 2, bytes, 0)

        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

Açıklamalar

Uygulama, sonuç baytlarını depolamak için gereken GetBytes dizi boyutunu tam olarak hesaplamak için kullanır GetByteCount. En büyük dizi boyutunu hesaplamak için uygulamanın kullanması GetMaxByteCountgerekir. GetByteCount yöntemi genellikle daha az bellek ayırmaya izin verirken, GetMaxByteCount yöntem genellikle daha hızlı yürütülür.

Akıştan okunan veriler gibi dönüştürülecek veriler yalnızca sıralı bloklarda kullanılabilir. Bu durumda veya veri miktarı daha küçük bloklara bölünmesi gereken kadar büyükse, uygulama sırasıyla yöntemi veya GetEncoder yöntemi tarafından GetDecoder sağlanan öğesini Encoder kullanmalıdırDecoder.

ASCIIEncoding hata algılama sağlamaz. U+007F'den büyük herhangi bir Unicode karakteri ASCII soru işareti ("?") olarak kodlanır.

Dikkat

Güvenlik nedeniyle, uygulamanızın , UnicodeEncodingveya UTF32Encoding kullanması UTF8Encodingve hata algılamayı etkinleştirmesi önerilir.

Ayrıca bkz.

Şunlara uygulanır