在.bin文件中查找BMP
本文关键字:查找 BMP 文件 bin | 更新日期: 2023-09-27 17:49:23
搜索了几个星期后,我似乎找不到解决问题的方法。我想做的是打开一个表单与RichTextBox,按下加载按钮,并加载.bin
要搜索的文件。然后,有一个单选按钮选择jpeg
或bmp
&在RichTextBox中,显示所有jpeg或bmp的——不是图像,只是偏移位置。
例如,"jpg发现于0x00002311",这是ÿØÿà开始的偏移量,或"bmp发现于0x00009382",这是BM在选定的.bin
文件中开始的位置。
这就是我在哪里:它找到一个bmp
或jpeg
,并显示一个计数,但不是偏移量。我需要它找到所有的图像和偏移
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");
}
}
}
你遇到的问题是StreamReader。Readline正在查找文本而不是二进制数据。
行被定义为一个字符序列,后跟换行符("'n")、回车符("'r"),或者回车符紧跟着换行符("'r'n")。
你需要做一个二分查找。试着以:
开头byte[] bytes = File.ReadAllBytes(dlgOpen.FileName);