ASCIIEncoding.GetBytes メソッド

定義

文字のセットをバイト シーケンスにエンコードします。

オーバーロード

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

指定された文字スパンを指定されたバイト スパンにエンコードします。

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

指定した文字ポインターで始まる文字のセットを、指定したバイト ポインターを開始位置として格納されるバイト シーケンスにエンコードします。

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

指定した文字配列に格納されている文字のセットを指定したバイト配列にエンコードします。

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

指定した String の文字セットを、指定したバイト配列にエンコードします。

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

ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs

指定された文字スパンを指定されたバイト スパンにエンコードします。

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

パラメーター

chars
ReadOnlySpan<Char>

エンコードする文字スパン。

bytes
Span<Byte>

結果のバイト セットを格納するスパン。

戻り値

bytes に書き込まれた実際のバイト数。

注釈

結果のバイトを格納するために 必要な GetBytes 正確なサイズを計算するには、 を使用します GetByteCount。 最大サイズを計算するには、 を使用します GetMaxByteCount。 メソッドは一般に、より GetByteCount 少ないメモリの割り当てを可能にしますが、 GetMaxByteCount メソッドは通常、より高速に実行されます。

ストリームから読み取られたデータなど、変換するデータは、シーケンシャル ブロックでのみ使用できます。 この場合、またはデータの量が大きくて小さいブロックに分割する必要がある場合は、 メソッドまたは メソッドによってGetDecoder提供される または GetEncoderEncoder をそれぞれ使用Decoderします。

ASCIIEncoding はエラー検出を提供しません。 より U+007F 大きい Unicode 文字は、ASCII 疑問符 ("?") としてエンコードされます。

注意事項

セキュリティ上の理由から、または UTF32Encoding を使用UnicodeEncodingUTF8Encodingして、エラー検出を有効にする必要があります。

適用対象

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

ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs

重要

この API は CLS 準拠ではありません。

CLS 準拠の代替
System.Text.ASCIIEncoding.GetBytes(Char[], Int32, Int32, Byte[], Int32)

指定した文字ポインターで始まる文字のセットを、指定したバイト ポインターを開始位置として格納されるバイト シーケンスにエンコードします。

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

パラメーター

chars
Char*

エンコードする最初の文字へのポインター。

charCount
Int32

エンコードする文字数。

bytes
Byte*

結果のバイト シーケンスの書き込みを開始する位置へのポインター。

byteCount
Int32

書き込む最大バイト数。

戻り値

bytes によって示される位置に書き込まれる実際のバイト数。

属性

例外

charsnullです。

または

bytesnullです。

charCount または byteCount が 0 未満です。

byteCount が結果のバイト数より少なくなっています。

フォールバックが発生しました (詳細については「.NET での文字エンコード」を参照)

および

EncoderFallbackEncoderExceptionFallback に設定されます。

注釈

結果のバイトを格納するために に GetBytes 必要な配列サイズを正確に計算するために、アプリケーションでは を使用 GetByteCountします。 配列の最大サイズを計算するには、アプリケーションで を使用 GetMaxByteCountする必要があります。 メソッドは一般に、より GetByteCount 少ないメモリの割り当てを可能にしますが、 GetMaxByteCount メソッドは通常、より高速に実行されます。

ストリームから読み取られたデータなど、変換するデータは、シーケンシャル ブロックでのみ使用できます。 この場合、またはデータの量が非常に大きいために小さなブロックに分割する必要がある場合、アプリケーションでは、 メソッドまたは メソッドによってGetDecoder提供される または Encoder をそれぞれ使用DecoderするGetEncoder必要があります。

ASCIIEncoding はエラー検出を提供しません。 U+007F より大きい Unicode 文字は、ASCII 疑問符 ("?") に変換されます。

注意事項

セキュリティ上の理由から、、、または UTF32Encoding を使用UTF8EncodingUnicodeEncodingしてエラー検出を有効にすることをお勧めします。

こちらもご覧ください

適用対象

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

ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs

指定した文字配列に格納されている文字のセットを指定したバイト配列にエンコードします。

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

パラメーター

chars
Char[]

エンコード対象の文字のセットを格納している文字配列。

charIndex
Int32

エンコードする最初の文字のインデックス。

charCount
Int32

エンコードする文字数。

bytes
Byte[]

結果のバイト シーケンスを格納するバイト配列。

byteIndex
Int32

結果のバイト シーケンスを書き込む開始位置のインデックス。

戻り値

bytes に書き込まれた実際のバイト数。

例外

charsnullです。

または

bytesnullです。

charIndexcharCount、または byteIndex が 0 未満です。

または

charIndex および charCountcharsにおいて有効な範囲を表していません。

または

byteIndexbytes の有効なインデックスではありません。

bytes には、byteIndex から配列の末尾までに十分なサイズがなく、結果のバイトを格納できません。

フォールバックが発生しました (詳細については「.NET での文字エンコード」を参照)

および

EncoderFallbackEncoderExceptionFallback に設定されます。

次の例では、 メソッドを GetBytes 使用して文字列から文字の範囲をエンコードし、エンコードされた文字をバイト配列内の要素の範囲に格納する方法を示します。

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

注釈

結果のバイトを格納するために に GetBytes 必要な配列サイズを正確に計算するために、アプリケーションでは を使用 GetByteCountします。 配列の最大サイズを計算するには、アプリケーションで を使用 GetMaxByteCountする必要があります。 メソッドは一般に、より GetByteCount 少ないメモリの割り当てを可能にしますが、 GetMaxByteCount メソッドは通常、より高速に実行されます。

ストリームから読み取られたデータなど、変換するデータは、シーケンシャル ブロックでのみ使用できます。 この場合、またはデータの量が非常に大きいために小さなブロックに分割する必要がある場合、アプリケーションでは、 メソッドまたは メソッドによってGetDecoder提供される または Encoder をそれぞれ使用DecoderするGetEncoder必要があります。

ASCIIEncoding はエラー検出を提供しません。 U+007F より大きい Unicode 文字は、ASCII 疑問符 ("?") としてエンコードされます。

注意事項

セキュリティ上の理由から、、、または UTF32Encoding を使用UTF8EncodingUnicodeEncodingしてエラー検出を有効にすることをお勧めします。

こちらもご覧ください

適用対象

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

ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs
ソース:
ASCIIEncoding.cs

指定した String の文字セットを、指定したバイト配列にエンコードします。

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

パラメーター

chars
String

エンコード対象の文字のセットを格納している String

charIndex
Int32

エンコードする最初の文字のインデックス。

charCount
Int32

エンコードする文字数。

bytes
Byte[]

結果のバイト シーケンスを格納するバイト配列。

byteIndex
Int32

結果のバイト シーケンスを書き込む開始位置のインデックス。

戻り値

bytes に書き込まれた実際のバイト数。

例外

snullです。

または

bytesnullです。

charIndexcharCount、または byteIndex が 0 未満です。

または

charIndex および charCountcharsにおいて有効な範囲を表していません。

または

byteIndexbytes の有効なインデックスではありません。

bytes には、byteIndex から配列の末尾までに十分なサイズがなく、結果のバイトを格納できません。

フォールバックが発生しました (詳細については「.NET での文字エンコード」を参照)

および

EncoderFallbackEncoderExceptionFallback に設定されます。

次の例では、 メソッドを GetBytes 使用して Unicode 文字配列から要素の範囲をエンコードし、エンコードされたバイトをバイト配列内の要素の範囲に格納する方法を示します。

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

注釈

結果のバイトを格納するために に GetBytes 必要な配列サイズを正確に計算するために、アプリケーションでは を使用 GetByteCountします。 配列の最大サイズを計算するには、アプリケーションで を使用 GetMaxByteCountする必要があります。 メソッドは一般に、より GetByteCount 少ないメモリの割り当てを可能にしますが、 GetMaxByteCount メソッドは通常、より高速に実行されます。

ストリームから読み取られたデータなど、変換するデータは、シーケンシャル ブロックでのみ使用できます。 この場合、またはデータの量が非常に大きいために小さなブロックに分割する必要がある場合、アプリケーションでは、 メソッドまたは メソッドによってGetDecoder提供される または Encoder をそれぞれ使用DecoderするGetEncoder必要があります。

ASCIIEncoding はエラー検出を提供しません。 U+007F より大きい Unicode 文字は、ASCII 疑問符 ("?") としてエンコードされます。

注意事項

セキュリティ上の理由から、、、または UTF32Encoding を使用UTF8EncodingUnicodeEncodingしてエラー検出を有効にすることをお勧めします。

こちらもご覧ください

適用対象