3

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

例如,“jpg found at 0x00002311”是 ÿØÿà 开始的偏移量,或者“bmp found at 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");

        }
    }
}
4

1 回答 1

0

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

行定义为字符序列后跟换行符 ("\n")、回车符 ("\r") 或回车符后紧跟换行符 ("\r\n")。

您需要进行二进制搜索。尝试从:

byte[] bytes = File.ReadAllBytes(dlgOpen.FileName);
于 2013-01-04T22:16:09.647 回答