UTF8Encoding.GetBytes メソッド (String, Int32, Int32, Byte , Int32)
String から指定した範囲の文字をエンコードし、その結果をバイト配列内の指定した範囲の要素に格納します。
Overrides Overloads Public Function GetBytes( _
ByVal s As String, _ ByVal charIndex As Integer, _ ByVal charCount As Integer, _ ByVal bytes() As Byte, _ ByVal byteIndex As Integer _) As Integer
[C#]
public override int GetBytes(strings,intcharIndex,intcharCount,byte[] bytes,intbyteIndex);
[C++]
public: int GetBytes(String* s,intcharIndex,intcharCount,unsigned charbytes __gc[],intbyteIndex);
[JScript]
public override function GetBytes(
s : String,charIndex : int,charCount : int,bytes : Byte[],byteIndex : int) : int;
パラメータ
- s
エンコードする文字列。 - charIndex
エンコードする s 内の最初の文字のインデックス。 - charCount
エンコードする文字数。 - bytes
エンコードされた結果が格納されるバイト配列。 - byteIndex
エンコードされた結果が格納されている bytes 内の最初の要素のインデックス。
戻り値
bytes に格納されているバイト数。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | s または bytes が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | charIndex 、 charCount 、または byteIndex が 0 未満です。
または charIndex に charCount を加算した値が、 s の長さを超えています。 または byteIndex が bytes の長さを超えています。 |
ArgumentException | byteIndex が bytes の長さと等しいです。
または bytes に格納されているバイトはありません。 または エンコーディング中に、サロゲート ペアの無効な上位メンバまたは下位メンバに遭遇しました。 |
解説
エンコードされた文字を格納するために GetBytes メソッドによって要求された配列サイズを正確に計算するには GetByteCount を使用し、その最大値を計算するには GetMaxByteCount を使用します。
エラー検出がオフのときに、無効なサロゲート シーケンスが検出された場合、無効な文字は無視され、戻り値に影響を与えず、例外もスローされません。
使用例
[Visual Basic, C#, C++] GetBytes メソッドを使用して、 String chars
からある範囲の文字をエンコードし、その結果をバイト配列 bytes
内のある範囲の要素に格納する方法を次の例に示します。 GetByteCount メソッドは、エンコードされた文字を格納するために必要なバイト数を確認するときに使用します。
Imports System
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 'Main
End Class 'UTF8EncodingExample
[C#]
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();
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
Byte bytes[];
String * chars = S"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(S"{0} bytes used to encode string.", __box(bytesEncodedCount));
Console::Write(S"Encoded bytes: ");
IEnumerator* myEnum = bytes->GetEnumerator();
while (myEnum->MoveNext())
{
Byte b = *__try_cast<Byte*>(myEnum->Current);
Console::Write(S"[{0}]", __box(b));
}
Console::WriteLine();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
UTF8Encoding クラス | UTF8Encoding メンバ | System.Text 名前空間 | UTF8Encoding.GetBytes オーバーロードの一覧 | GetByteCount | GetMaxByteCount