下面是我的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;
}
}我真的不知道这是怎么回事,就像我说的那样,跨过一步,或者断点根本帮不上忙,这并不都是太棒了。
发布于 2017-01-12 02:48:29
哦,我觉得很蠢,我必须休息一下或者喝杯咖啡。问题是,我提出了一个比较的立场,而不是重置它,如果它失败了。
if (Binary.ReadByte().ToString("X2") == "D9")是将它提升到一个字节,并返回false,所以我只需要添加,否则就会说
Binary.BaseStream.Position--;https://stackoverflow.com/questions/41604233
复制相似问题