UTF8Encoding.GetBytes メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
文字のセットをバイト シーケンスにエンコードします。
オーバーロード
| 名前 | 説明 |
|---|---|
| GetBytes(Char[], Int32, Int32, Byte[], Int32) |
指定した文字配列の文字セットを、指定したバイト配列にエンコードします。 |
| GetBytes(String, Int32, Int32, Byte[], Int32) |
指定した String の文字セットを、指定したバイト配列にエンコードします。 |
| GetBytes(String) |
指定した String オブジェクト内の文字をバイト シーケンスにエンコードします。 |
| GetBytes(Char*, Int32, Byte*, Int32) |
指定した文字ポインターから始まる一連の文字を、指定したバイト ポインターから始めて格納されるバイトシーケンスにエンコードします。 |
GetBytes(Char[], Int32, Int32, Byte[], Int32)
指定した文字配列の文字セットを、指定したバイト配列にエンコードします。
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に書き込まれた実際のバイト数。
例外
charIndex または charCount または byteIndex が 0 未満です。
-または-
charIndex および charCount は、 chars内の有効な範囲を示していません。
-または-
byteIndex は、 bytesの有効なインデックスではありません。
エラー検出が有効になっており、 chars に無効な文字シーケンスが含まれています。
-または-
bytes は、結果のバイトに対応するために、 byteIndex から配列の末尾まで十分な容量を持っていません。
フォールバックが発生しました (詳細については、「 .NET での文字エンコード」を参照してください)
および
EncoderFallback は EncoderExceptionFallback に設定されます。
例
次の例では、 GetBytes メソッドを使用して文字列から文字の範囲をエンコードし、エンコードされたバイトをバイト配列内の要素の範囲に格納します。
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Byte[] bytes;
String chars = "UTF8 Encoding Example";
UTF8Encoding utf8 = new UTF8Encoding();
int byteCount = utf8.GetByteCount(chars.ToCharArray(), 0, 13);
bytes = new Byte[byteCount];
int bytesEncodedCount = utf8.GetBytes(chars, 0, 13, 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 UTF8EncodingExample
Public Shared Sub Main()
Dim bytes() As Byte
Dim chars As String = "UTF8 Encoding Example"
Dim utf8 As New UTF8Encoding()
Dim byteCount As Integer = utf8.GetByteCount(chars.ToCharArray(), 0, 13)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8.GetBytes(chars, 0, 13, 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 メソッドの実行速度は一般に速くなります。
エラー検出では、無効なシーケンスにより、このメソッドは ArgumentException 例外をスローします。 エラー検出がないと、無効なシーケンスは無視され、例外はスローされません。
ストリームから読み取られたデータなど、変換するデータは、シーケンシャル ブロックでのみ使用できます。 この場合、またはデータ量が非常に大きくて小さいブロックに分割する必要がある場合は、GetDecoder メソッドまたは GetEncoder メソッドによって提供されるDecoderまたはEncoderをそれぞれ使用します。
エンコードされたバイトがファイルまたはストリームとして保存されるときに正しくデコードされるようにするには、エンコードされたバイトのストリームの前にプリアンブルを付けます。 プリアンブルをバイト ストリームの先頭 (ファイルに書き込む一連のバイトの先頭など) に挿入するのは開発者の責任です。 GetBytes メソッドは、エンコードされたバイトのシーケンスの先頭にプリアンブルを付加しません。
こちらもご覧ください
適用対象
GetBytes(String, Int32, Int32, Byte[], Int32)
指定した String の文字セットを、指定したバイト配列にエンコードします。
public:
override int GetBytes(System::String ^ s, int charIndex, int charCount, cli::array <System::Byte> ^ bytes, int byteIndex);
public override int GetBytes(string s, int charIndex, int charCount, byte[] bytes, int byteIndex);
override this.GetBytes : string * int * int * byte[] * int -> int
Public Overrides Function GetBytes (s As String, charIndex As Integer, charCount As Integer, bytes As Byte(), byteIndex As Integer) As Integer
パラメーター
- charIndex
- Int32
エンコードする最初の文字のインデックス。
- charCount
- Int32
エンコードする文字数。
- bytes
- Byte[]
結果のバイト シーケンスを格納するバイト配列。
- byteIndex
- Int32
結果のバイト シーケンスの書き込みを開始する位置のインデックス。
返品
bytesに書き込まれた実際のバイト数。
例外
charIndex または charCount または byteIndex が 0 未満です。
-または-
charIndex および charCount は、 s内の有効な範囲を示していません。
-または-
byteIndex は、 bytesの有効なインデックスではありません。
エラー検出が有効になっており、 s に無効な文字シーケンスが含まれています。
-または-
bytes は、結果のバイトに対応するために、 byteIndex から配列の末尾まで十分な容量を持っていません。
フォールバックが発生しました (詳細については、「 .NET での文字エンコード」を参照してください)
および
EncoderFallback は EncoderExceptionFallback に設定されます。
例
次の例では、 GetBytes メソッドを使用して Unicode 文字配列から要素の範囲をエンコードし、エンコードされたバイトをバイト配列内の要素の範囲に格納します。
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Byte[] bytes;
// Unicode characters.
Char[] chars = new Char[] {
'\u0023', // #
'\u0025', // %
'\u03a0', // Pi
'\u03a3' // Sigma
};
UTF8Encoding utf8 = new UTF8Encoding();
int byteCount = utf8.GetByteCount(chars, 1, 2);
bytes = new Byte[byteCount];
int bytesEncodedCount = utf8.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 UTF8EncodingExample
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 utf8 As New UTF8Encoding()
Dim byteCount As Integer = utf8.GetByteCount(chars, 1, 2)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8.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 メソッドの実行速度は一般に速くなります。
エラー検出では、無効なシーケンスにより、このメソッドは ArgumentException 例外をスローします。 エラー検出がないと、無効なシーケンスは無視され、例外はスローされません。
ストリームから読み取られたデータなど、変換するデータは、シーケンシャル ブロックでのみ使用できます。 この場合、またはデータ量が非常に大きくて小さいブロックに分割する必要がある場合は、GetDecoder メソッドまたは GetEncoder メソッドによって提供されるDecoderまたはEncoderをそれぞれ使用します。
エンコードされたバイトがファイルまたはストリームとして保存されるときに正しくデコードされるようにするには、エンコードされたバイトのストリームの前にプリアンブルを付けます。 プリアンブルをバイト ストリームの先頭 (ファイルに書き込む一連のバイトの先頭など) に挿入するのは開発者の責任です。 GetBytes メソッドは、エンコードされたバイトのシーケンスの先頭にプリアンブルを付加しません。
こちらもご覧ください
適用対象
GetBytes(String)
指定した String オブジェクト内の文字をバイト シーケンスにエンコードします。
public:
override cli::array <System::Byte> ^ GetBytes(System::String ^ s);
public override byte[] GetBytes(string s);
override this.GetBytes : string -> byte[]
Public Overrides Function GetBytes (s As String) As Byte()
パラメーター
- s
- String
エンコードする文字列。
返品
s パラメーターで指定された文字列にエンコードされた文字を含むバイト配列。
適用対象
GetBytes(Char*, Int32, Byte*, Int32)
重要
この API は CLS 準拠ではありません。
指定した文字ポインターから始まる一連の文字を、指定したバイト ポインターから始めて格納されるバイトシーケンスにエンコードします。
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)]
[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)]
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)>]
[<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
[<System.CLSCompliant(false)>]
override this.GetBytes : nativeptr<char> * int * nativeptr<byte> * int -> int
パラメーター
- chars
- Char*
エンコードする最初の文字へのポインター。
- charCount
- Int32
エンコードする文字数。
- bytes
- Byte*
結果のバイト シーケンスの書き込みを開始する位置へのポインター。
- byteCount
- Int32
書き込む最大バイト数。
返品
bytesによって示される場所に書き込まれた実際のバイト数。
- 属性
例外
charCount または byteCount が 0 未満です。
フォールバックが発生しました (詳細については、「 .NET での文字エンコード」を参照してください)
および
EncoderFallback は EncoderExceptionFallback に設定されます。
注釈
結果のバイトを格納するために GetBytes に必要な正確な配列サイズを計算するには、 GetByteCount メソッドを呼び出します。 配列の最大サイズを計算するには、 GetMaxByteCount メソッドを呼び出します。 一般に、 GetByteCount メソッドは割り当てるメモリが少なくなりますが、 GetMaxByteCount メソッドの実行速度は一般に速くなります。
エラー検出では、無効なシーケンスにより、このメソッドは ArgumentException 例外をスローします。 エラー検出がないと、無効なシーケンスは無視され、例外はスローされません。
ストリームから読み取られたデータなど、変換するデータは、シーケンシャル ブロックでのみ使用できます。 この場合、またはデータ量が非常に大きくて小さいブロックに分割する必要がある場合は、Decoderメソッドまたは GetEncoder メソッドによって返される GetDecoderEncoderをそれぞれ使用します。
エンコードされたバイトがファイルまたはストリームとして保存されるときに正しくデコードされるようにするには、エンコードされたバイトのストリームの前にプリアンブルを付けます。 プリアンブルをバイト ストリームの先頭 (ファイルに書き込む一連のバイトの先頭など) に挿入するのは開発者の責任です。 GetBytes メソッドは、エンコードされたバイトのシーケンスの先頭にプリアンブルを付加しません。