使用C#查找十六进制值

时间:2014-07-26 10:37:42

标签: c# search hex

我正在尝试在文件中搜索十六进制值,如果该值存在,我需要从找到的位置复制16个字节char。我正试图在C#中做同样的事情。

请在下面找到我尝试过的代码,我们将非常感谢您的修改。

BinaryReader bw = new BinaryReader(File.OpenRead(filepath));
byte[] bc = { 0xa0, 0x00, 0x00, 0x03 };
for (int i = 0; i < br.BaseStream.Length-10;i++)
{

if (bw.ReadUInt32() == 0xa00003)
{
    Console.WriteLine("Found @ {0}", i);

}

bw.Close();

我收到如下错误:

  

类型'System.IO.EndOfStreamException'的未处理异常   发生在mscorlib.dll

     

其他信息:无法在流的末尾阅读。

1 个答案:

答案 0 :(得分:0)

错误是由于for循环的步长等于1并且您一次读取4个字节。阅读后,Stream位置提前4个。将for循环更改为以下一个:

for (int i = 0; i < br.BaseStream.Length - 10; i += 4)
{
    //...
}

编辑:

如果要在每个位置搜索而不是每次都跳过4个字节,请使用以下代码:

    Stream f = File.OpenRead(fileName);
    BinaryReader br = new BinaryReader(f);
    for (int i = 0; i < f.Length - 10; i++)
    {
        f.Seek(i, SeekOrigin.Begin);
        if (br.ReadUInt32() == 0xa00003)
        {
            Console.WriteLine("Found @ {0}", i);
        }
    }
    br.Close();