現在、バイナリファイルのデータから特定の番地のデータだけをテキストボックスに表示させたいというプログラムを作成しております。

特定番地は0x1F65番地~の6バイトを抜き出し、そのHEXデータをテキストボックスにそのHEXがわかるテキストデータとして表示させたいと考えているのですが、この場合どのようにコーディングしたらよいのでしょうか。


現在のプログラムは

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//指定したファイル名でStreamReaderを設定する

try{
System::IO::StreamReader^ sr = gcnew System::IO::StreamReader("sample.bin");
//受け皿
array<wchar_t>^ buf=gcnew array<wchar_t>(6);

//先頭から0x1f63バイト動かす
sr->BaseStream->Seek(0x1f65,System::IO::SeekOrigin::Begin);

//2バイト読み込む
sr->Read(buf, 0, buf->Length);

//此処でテキストボックスに入れる
this->textBox1->Text= gcnew System::String(buf);

}
catch(System::Exception^ ex){
System::Windows::Forms::MessageBox::Show(ex->ToString());
}
//this->textBox1->Text = L"変更1";
this->textBox2->Text = L"変更2";
this->textBox3->Text = L"変更3";
}


コマンドボタンを押して、特定番地をBUFに入れた後テキストボックスに代入しています。これだとAsciiコードに準じたの文字が表示されてしまうので、そのHEX番号がわかるようにテキストボックスに入れたいとおもっています。

どうぞ、ご教授よろしくお願いいたします。

「バイナリファイルのデータから特定の番地の」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (1件)

 こんばんは。

以下で出来ませんか。

private: System::String^ ToHEXString(array<wchar_t>^% refArray)
{
//array<wchar_t>型バッファからHEXへの変換
System::String^ sHex = gcnew System::String(0, 0);
int complete = 0;
for each(wchar_t wc in refArray)
{
//HEX変換
sHex += System::String::Format("{0:X2}", int(wc));

//最後以外はカンマを付加する
if(++complete < refArray->Length)sHex += ", ";
}
return sHex;
}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//指定したファイル名でStreamReaderを設定する

try{
System::IO::StreamReader^ sr=gcnew System::IO::StreamReader("sample.txt");
//受け皿
array<wchar_t>^ buf=gcnew array<wchar_t>(6);

//先頭から0x1f65バイト動かす
sr->BaseStream->Seek(0x1f65,System::IO::SeekOrigin::Begin);

//6バイト読み込む
sr->Read(buf, 0, buf->Length);

//此処でテキストボックスに入れる
this->textBox1->Text=this->ToHEXString(buf);

}
catch(System::Exception^ ex){
System::Windows::Forms::MessageBox::Show(ex->ToString());
}
//this->textBox1->Text = L"変更1";
this->textBox2->Text = L"変更2";
this->textBox3->Text = L"変更3";
}
    • good
    • 0
この回答へのお礼

回答ありがとうございました。返事遅れて大変申し訳ありません。

教えていただいたとおり、プログラムしたところ、表示したい
文字が表示されました。


改めてありがとうございました。

お礼日時:2009/06/08 14:13

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング