【问题标题】:BinaryReader Skipping Ahead In PositionBinaryReader 跳过位置
【发布时间】:2017-01-12 02:38:13
【问题描述】:

下面是我的 BinaryReader 循环,我尝试单步执行它以查看发生了什么,但是当它返回设置 Position 变量时,它从“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;
     }
}

我真的不知道这是哪里出了问题,就像我说的那样,跨步或断点根本没有帮助,这并不是很好。

【问题讨论】:

    标签: c# file binaryreader


    【解决方案1】:

    哦,我觉得自己很愚蠢,我必须休息一下或喝杯咖啡。问题是我正在推进位置进行比较,如果失败则不重置它。

    if (Binary.ReadByte().ToString("X2") == "D9")
    

    将它推进一个字节并返回 false,所以我只需要添加,否则说

    Binary.BaseStream.Position--;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      相关资源
      最近更新 更多