经过几周的搜索,我似乎无法找到解决问题的方法。我想要做的是打开一个包含RichTextBox的表单,按下加载按钮并加载.bin
要搜索的文件。然后,使用单选按钮选择jpeg
或bmp
&在RichTextBox中,显示所有jpeg或bmp - 而不是图像,只显示偏移位置。
例如,“jpg found at 0x00002311”,这是ÿØÿà开始的偏移,或者“bmp found at 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");
}
}
}
答案 0 :(得分:0)
您遇到的问题是StreamReader.Readline正在查找文本而不是二进制数据。
一行被定义为字符序列,后跟换行符(“\ n”),回车符(“\ r”)或回车符后紧跟换行符号(“\ r \ nn “)。
您需要进行二分搜索。尝试从:
开始byte[] bytes = File.ReadAllBytes(dlgOpen.FileName);