次の方法で共有


UTF8Encoding.GetBytes メソッド (Char[], Int32, Int32, Byte , Int32)

Unicode 文字配列から指定した範囲の要素をエンコードし、その結果をバイト配列内の指定した範囲の要素に格納します。

Overrides Overloads Public Function GetBytes( _
   ByVal chars() As Char, _   ByVal charIndex As Integer, _   ByVal charCount As Integer, _   ByVal bytes() As Byte, _   ByVal byteIndex As Integer _) As Integer
[C#]
public override int GetBytes(char[] chars,intcharIndex,intcharCount,byte[] bytes,intbyteIndex);
[C++]
public: int GetBytes(__wchar_tchars __gc[],intcharIndex,intcharCount,unsigned charbytes __gc[],intbyteIndex);
[JScript]
public override function GetBytes(
   chars : Char[],charIndex : int,charCount : int,bytes : Byte[],byteIndex : int) : int;

パラメータ

  • chars
    エンコードする文字配列。
  • charIndex
    エンコードする chars 内の最初の文字のインデックス。
  • charCount
    エンコードする文字数。
  • bytes
    エンコードされた結果が格納されるバイト配列。
  • byteIndex
    エンコードされた結果が格納されている bytes 内の最初の要素のインデックス。

戻り値

bytes に格納されているバイト数。

例外

例外の種類 条件
ArgumentNullException chars または bytes が null 参照 (Visual Basic では Nothing) です。
ArgumentOutOfRangeException charIndexcharCount 、または byteIndex が 0 未満です。

または

charIndexcharCount の合計値が、 chars の長さを超えています。

または

byteIndexbytes の長さを超えています。

ArgumentException bytes には、エンコードされた文字を格納するために必要な領域がありません。

または

エンコーディング中に、サロゲート ペアの無効な上位メンバまたは下位メンバに遭遇しました。

解説

エンコードされた文字を格納するために GetBytes メソッドによって要求された配列サイズを正確に計算するには GetByteCount を使用し、その最大値を計算するには GetMaxByteCount を使用します。

エラー検出がオフのときに、無効なサロゲート シーケンスが検出された場合、無効な文字は無視され、戻り値に影響を与えず、例外もスローされません。

使用例

[Visual Basic, C#, C++] GetBytes メソッドを使用して、Unicode 文字配列 chars からある範囲の要素をエンコードし、その結果をバイト配列 bytes 内のある範囲の要素に格納する方法を次の例に示します。 GetByteCount メソッドは、エンコードされた要素を格納するために必要なバイト数を確認するときに使用します。

 
Imports System
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 'Main
End Class 'UTF8EncodingExample

[C#] 
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();
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Text;
using namespace System::Collections;

int main()
{
   Byte bytes[];
   // Unicode characters.
   Char chars[] = 
   {
      L'\u03a0',  // Pi
      L'\u03a3',  // Sigma
      L'\u03a6',
      L'\u03a9'
   };

   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(S"{0} bytes used to encode characters.", __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