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
それにしてももう少し効率よくなりそう。特に改行あたり。
何かありましたらよろしくお願いします。
んで、これをどうやってファイルに戻すのだろうか・・・
まだ勉強中です。。。