連載
» 2003年04月11日 05時00分 UPDATE

.NET TIPS:バイト列を文字列に変換するには?

[遠藤孝信,デジタルアドバンテージ]
.NET TIPS
Insider.NET


「.NET TIPS」のインデックス

連載目次

 「TIPS:文字列をシフトJISとしてバイト列に変換するには?」では、Encodingクラス(System.Text名前空間)により、Unicode文字列をシフトJIS文字列へと変換し、それをバイト列(byte型データの配列)として取得した。Encodingクラスでは、これとは逆に、バイト列を、指定したエンコーディングでUnicode文字列へ変換することができる。これには、EncodingクラスのGetStringメソッドを使用する。

 エンコーディングとしてシフトJISを使用する場合、つまりバイト列のデータをシフトJIS文字の文字コードの並びとして解釈する場合には、シフトJISをサポートするEncodingオブジェクトが必要になる。これは次のようにして取得する。

Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");


 EncodingクラスとGetEncodingメソッドについては、冒頭に挙げた「TIPS:文字列をシフトJISとしてバイト列に変換するには?」で解説している。

 次に、変換元となるバイト列をパラメータに指定し、このEncodingオブジェクトに対してGetStringメソッドを呼び出せば、変換後のUnicode文字列を取得することができる。

byte[] bytes = new byte[]
  {0x82,0xB1,0x82,0xF1,0x82,0xC9,0x82,0xBF,0x82,0xED};
string str = sjisEnc.GetString(bytes);


 次のサンプル・プログラムは、「TIPS:文字列をシフトJISとしてバイト列に変換するには?」でのサンプル・プログラムで変換したバイト列のデータを、文字列に戻している。

// byte2str.cs

using System;
using System.Text;

class BytesToString {
  public static void Main() {

    byte[] bytes = new byte[] {
      0x83, 0x56, 0x83, 0x74, 0x83, 0x67, 0x4A, 0x49,
      0x53, 0x82, 0xD6, 0x95, 0xCF, 0x8A, 0xB7};

    Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
    string str = sjisEnc.GetString(bytes);

    Console.WriteLine(str);
    // 出力:シフトJISへ変換
  }
}
// コンパイル方法:csc byte2str.cs

バイト列のデータを文字列へ変換するC#のサンプル・プログラム(byte2str.cs)
byte2str.csのダウンロード

 文字のエンコーディングとしてシフトJIS以外を扱う場合には、「TIPS:Encodingクラスで扱えるエンコーディング名は?」を参考にしていただきたい。

カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Encodingクラス(System.Text名前空間)
関連TIPS:文字列をシフトJISとしてバイト列に変換するには?
関連TIPS:Encodingクラスで扱えるエンコーディング名は?


「.NET TIPS」のインデックス

.NET TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。