从Hexidimal文字读取到字符串

问题描述:

一直在涉及读取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框中拉出。 –

我得到了我正在寻找的解决方案。我用这个代码。

// 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