2017-08-24 4 views
0

Vous avez travaillé sur un projet qui implique la lecture des en-têtes ROM (à partir de la scène d'émulation) et la génération de rapports. J'en ai trouvé la majeure partie, mais j'ai du mal à trouver le code à lire à partir d'une adresse littérale hexadécimale dans la ROM (EX: 120h puis lire "x" quantité d'octets) (EX2: Certains appels à lire 120h à 140h). J'ai essayé de regarder sur YouTube et de googler et pas de chance avec jusqu'à présent. En outre, la langue est C#.Lecture d'un littéral hexidimal à une chaîne

Voici mon code jusqu'à présent.

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 

Toute aide serait appréciée. Je vous remercie.

+0

La ROM est-elle représentée par un fichier dans votre projet? –

+0

Oui. Il est tiré d'une boîte OpenDialoge. –

Répondre

0

J'ai trouvé la solution que je recherchais. J'ai utilisé ce code.

// 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(); 

J'ai maintenant la chaîne de code dont j'ai besoin. Mais pose maintenant une nouvelle question possible, je vais demander à un nouveau poste.

+0

Vous devez placer 'BinaryReader' dans un bloc' using' pour empêcher les exceptions d'arrêter le traitement. – BanksySan