我正在尝试在文件中搜索十六进制值,如果该值存在,我需要从找到的位置复制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
其他信息:无法在流的末尾阅读。
答案 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();