2009年06月10日(水)

C# ファイルをバイナリデータに変換

テーマ:C#

ファイルをバイナリデータに変換する機会があったのでメモ。


---------------------------------------------

<大体の手順>

1)ファイルをメモリ内に読み込む

2)メモリのデータをバイナリ形式で読み込む

3)byteの配列に格納

---------------------------------------------

using System;
using System.IO;
using System.Windows.Forms;

class Program:Form
{
  static void Main(string[] args)
  {

    //ファイルを開くダイアログの生成

    OpenFileDialog of = new OpenFileDialog();

    //ダイアログの表示
    DialogResult d=of.ShowDialog();


    //OKボタンが押されたらデータを読み込む処理へ
    if (d == DialogResult.OK)
    {

      //ファイルパスの取得

      string filepass=of.FileName;

      //ファイルをメモリへ読み込む

      FileStream fs = new FileStream(filepass,

                     FileMode.Open,

                     FileAccess.Read,

                     FileShare.None);

      //バイナリ形式でプログラム内に読み込む
      BinaryReader br = new BinaryReader(fs);

      byte[] data;    //データを格納する変数

      //ファイルサイズを求める
      FileInfo fi = new FileInfo(filepass);
      long filesize = fi.Length;

      //配列の長さをファイルサイズにして定義

      data = new byte[filesize];

      //1バイトずつ取得しながら16進数で表示

      int cnt = 1;
      for (long i = 1; i < filesize; i++)
      {
        data[i] = br.ReadByte();
        Console.Write("{0,2:x} ",data[i]);


        //25個表示したら改行
        if (cnt == 25)
        {
          Console.WriteLine();
          cnt = 0;
        }
        cnt++;
      }

    }

  }

}


-----------------------------------------------------

-----------------------------------------------------

16進数じゃなく2進数で表示させると

ファイルサイズが大きいデータほど、映画観てる気分になるw


それにしてももう少し効率よくなりそう。特に改行あたり。

何かありましたらよろしくお願いします。

んで、これをどうやってファイルに戻すのだろうか・・・

まだ勉強中です。。。



コメント

[コメントをする]

コメント投稿

一緒にプレゼントも贈ろう!

Amebaおすすめキーワード

    アメーバID登録して、ブログをつくろう! powered by Ameba (アメーバ)|ブログを中心とした登録無料サイト