この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Encoding.GetString メソッド (Byte[], Int32, Int32)

 

公開日: 2016年10月

派生クラスでオーバーライドされた場合、指定したバイト配列に格納されているバイト シーケンスを文字列にデコードします。

名前空間:   System.Text
アセンブリ:  mscorlib (mscorlib.dll 内)

public virtual string GetString(
	byte[] bytes,
	int index,
	int count
)

パラメーター

bytes
Type: System.Byte[]

デコード対象のバイト シーケンスが格納されたバイト配列。

index
Type: System.Int32

デコードする最初のバイトのインデックス。

count
Type: System.Int32

デコードするバイト数。

戻り値

Type: System.String

指定したバイト シーケンスのデコード結果が格納されている文字列。

Exception Condition
ArgumentException

バイト配列には、無効な Unicode コード ポイントが含まれています。

ArgumentNullException

bytesnull です。

ArgumentOutOfRangeException

index または count が 0 未満です。

または

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

DecoderFallbackException

フォールバックが発生しました (詳細については、「.NET Framework における文字エンコーディング」を参照してください)。

および

DecoderFallbackDecoderExceptionFallback に設定されます。

変換するデータが (データのストリームからの読み取り) などの連続したブロック内でのみ使用可能な場合、またはデータの量が非常に大きいので、小さなブロックに分割する必要がある、使用する必要があります、 Decoder または Encoder によって提供される、 GetDecoder メソッドまたは GetEncoder メソッド、派生クラスのそれぞれをします。

「解説」セクションを参照してください、 Encoding.GetChars デコード手法および考慮事項については、リファレンス トピックです。

次の例では、utf-8 でエンコードされた文字列を読み取りますによって表されるバイナリ ファイルから、 FileStream オブジェクトです。 2,048 バイトよりも小さいファイルの場合、バイト配列の呼び出しにファイル全体の内容を読み取りますが、 GetString(Byte[], Int32, Int32) のデコードを実行するメソッドです。 大きいファイルの場合、2,048 バイトずつ読み込むを呼び出し、バイト配列に、 Decoder.GetCharCount(Byte[], Int32, Int32) 文字列の文字数を決定する方法は、配列に含まれを呼び出して、 Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) のデコードを実行するメソッドです。

using System;
using System.IO;
using System.Text;

public class Example
{
   const int MAX_BUFFER_SIZE = 2048;
   static Encoding enc8 = Encoding.UTF8;
   static byte[] bytes = new byte[MAX_BUFFER_SIZE]; 

   public static void Main()
   {
      FileStream fStream = new FileStream(@".\Utf8Example.txt", FileMode.Open);
      string contents = null;

      // If file size is small, read in a single operation.
      if (fStream.Length <= MAX_BUFFER_SIZE) {
         int bytesRead = fStream.Read(bytes, 0, bytes.Length);
         contents = enc8.GetString(bytes, 0, bytesRead);
      }   
      // If file size exceeds buffer size, perform multiple reads.
      else {
         contents = ReadFromBuffer(fStream);
      }
      fStream.Close();
      Console.WriteLine(contents);
   }

    private static string ReadFromBuffer(FileStream fStream)
    {
        string output = String.Empty;
        Decoder decoder8 = enc8.GetDecoder();

        while (fStream.Position < fStream.Length) {
           int nBytes = fStream.Read(bytes, 0, bytes.Length);
           int nChars = decoder8.GetCharCount(bytes, 0, nBytes);
           char[] chars = new char[nChars];
           nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0);
           output += new String(chars, 0, nChars);                                                     
        }
        return output;
    }   
}
// The example displays the following output:
//     This is a UTF-8-encoded file that contains primarily Latin text, although it
//     does list the first twelve letters of the Russian (Cyrillic) alphabet:
//     
//     А б в г д е ё ж з и й к
//     
//     The goal is to save this file, then open and decode it as a binary stream.

例は、Utf8Example.txt をという名前の utf-8 でエンコードされたファイルに保存する必要がありますが、次のテキストを使用します。


This is a UTF-8-encoded file that contains primarily Latin text, although it 
does list the first twelve letters of the Russian (Cyrillic) alphabet:

А б в г д е ё ж з и й к

The goal is to save this file, then open and decode it as a binary stream.

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: