在.bin文件中查找BMP

本文关键字:查找 BMP 文件 bin | 更新日期: 2023-09-27 17:49:23

搜索了几个星期后,我似乎找不到解决问题的方法。我想做的是打开一个表单与RichTextBox,按下加载按钮,并加载.bin要搜索的文件。然后,有一个单选按钮选择jpegbmp &在RichTextBox中,显示所有jpeg或bmp的——不是图像,只是偏移位置。

例如,"jpg发现于0x00002311",这是ÿØÿà开始的偏移量,或"bmp发现于0x00009382",这是BM在选定的.bin文件中开始的位置。

这就是我在哪里:它找到一个bmpjpeg,并显示一个计数,但不是偏移量。我需要它找到所有的图像和偏移

private void button7_Click(object sender, EventArgs e)
{
    using (OpenFileDialog dlgOpen = new OpenFileDialog())
    {
       try
        {
            long count = 0; string line;
            List<String> LinesFound = new List<string>();
            dlgOpen.Filter = "All files(*.*)|*.*";
            dlgOpen.InitialDirectory = "C://bin";
            dlgOpen.Title = "Load";
            if (dlgOpen.ShowDialog() == DialogResult.OK)
                textBox5.Text = dlgOpen.FileName;
            {
                var sr = new StreamReader(dlgOpen.FileName, Encoding.Default);
                while ((line = sr.ReadLine()) != null)
                {
                    if (line.Contains("ÿØÿà"))
                        richTextBox1.Text = ("JPEG Found at address") + count++;
                    else if (line.Contains("BM"))
                        richTextBox1.Text = ("BMP Found at address") + count++;
                }
             }
          }
            catch (Exception)
            {
                MessageBox.Show("error in reading file");
        }
    }
}

在.bin文件中查找BMP

你遇到的问题是StreamReader。Readline正在查找文本而不是二进制数据。

行被定义为一个字符序列,后跟换行符("'n")、回车符("'r"),或者回车符紧跟着换行符("'r'n")。

你需要做一个二分查找。试着以:

开头
byte[] bytes = File.ReadAllBytes(dlgOpen.FileName);