下面是我的BinaryReader循环,我已尝试单步执行它以查看正在进行的操作,但当它返回设置位置变量时,它会从" 433939"到了" 433941",没有别的东西在与它互动,它在这个循环中根本没有变化,但它不会从433939跳到433940而是跳过它。我在这里缺少什么吗?
while (Binary.BaseStream.Position < Binary.BaseStream.Length)
{
CurrentData = Binary.ReadByte().ToString("X2");
Position = Binary.BaseStream.Position;
if (CurrentData == "FF")
{
if (ImageFound == false)
{
if (Binary.ReadByte().ToString("X2") == "D8")
{
Console.WriteLine("Header Found!");
ImageFound = true;
Binary.BaseStream.Position = Position;
continue;
}
}
if (ImageFound == true)
{
if (Binary.ReadByte().ToString("X2") == "D9")
{
Console.WriteLine("Footer Fount!");
ImageFound = false;
Image.Append(Binary.ReadByte().ToString("FFD9"));
File.WriteAllText(new Random().Next().ToString() + ".bin", Image.ToString());
Console.ReadLine();
continue;
}
}
}
if (ImageFound == true)
{
Image.Append(CurrentData);
continue;
}
}
我真的没有看到这出错的地方,就像我说过一步或断点都没有帮助,这一切都不是很好。
答案 0 :(得分:0)
哦,我觉得愚蠢,我必须要休息或喝咖啡。问题是我正在推进比较的位置,如果失败则不重置它。
if (Binary.ReadByte().ToString("X2") == "D9")
将它推进到一个字节并返回false,所以我只需要添加,否则说
Binary.BaseStream.Position--;