2017-08-24 14 views
0

ROMヘッダーの読み込み(エミュレーション・シーンからの)とレポート・データを含むプロジェクトで作業していました。私はそれをレイアウトしたのですが、ROMの16進数のリテラルアドレス(EX:120h、次に "x"バイトの量)から読み取るコードを見つけるのに問題があります。(EX2:120hから140h )。私はYouTubeで見てみて、それを検索して、これまでのところ運が無かった。また、言語はC#です。ヘキサ・リテラルから文字列への読み取り

ここまでは私のコードです。

private void openROMToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog1.Title = "Select A ROM File"; 
    OpenFileDialog1.InitialDirectory = "C:/Users"; 
    OpenFileDialog1.ShowDialog(); 
    textBox1.Text = System.IO.Path.GetFileName(OpenFileDialog1.FileName); 
    textBox8.Text = "Calculating..."; 
    { 
     backgroundWorker1.RunWorkerAsync(OpenFileDialog1.FileName); 
    } 

    string getExt = Path.GetExtension(OpenFileDialog1.FileName); 

    getExt = getExt.ToLower(); 

    if (getExt == ".smd" || getExt == ".gen" || getExt == ".md") 
    { 
     // SEGA GENESIS CODE (READ ROM DATA GOES HERE) 
    } 
    // REPEAT "if" STATEMENT FOR NEXT FILE FORMAT 

助けてください。ありがとうございました。

+0

プロジェクトではROMがファイルで表されていますか? –

+0

はい。そのOpenDialogeボックスから引き出されます。 –

答えて

0

私が探していた解決策が見つかりました。私はこのコードを使用しました。

// SEGA GENESIS CODE 

     // ROM NAME 2 

       BinaryReader br = new 
       BinaryReader(File.OpenRead(OpenFileDialog1.FileName)); 
       string romNameA = null; 
       for (int i = 0x120; i <= 0x144; i++) 
       { 
        br.BaseStream.Position = i; 
        romNameA += br.ReadByte().ToString("X2"); 
        textBox4.Text = romNameA; 
       } 
       br.Close(); 

これで、必要なコード文字列を取得できました。しかし、今私は新しい投稿で尋ねる可能性のある新しい疑問を提起する。

+0

'BinaryReader'を' using'ブロックにラップして、処理中のハンドルを停止させる例外を防ぐことができます。 – BanksySan

関連する問題