2017-08-24 113 views
0

一直在涉及讀取ROM標題(來自仿真場景)和報告數據的項目。我已經完成了大部分工作,但是無法從ROM中的十六進制文字地址中讀取代碼(EX:120h,然後讀取「x」字節數量)(EX2:某些呼叫讀取120h到140h )。我試圖在YouTube上搜索並使用Google搜索,迄今爲止還沒有運氣。此外,該語言是C#。從Hexidimal文字讀取到字符串

這是我的代碼到目前爲止。

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