十六进制值查找c#
本文关键字:查找 十六进制 | 更新日期: 2023-09-27 18:14:51
我试图在文件内搜索十六进制值,如果该值存在,我需要从该位置复制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
附加信息:无法读取超出流末尾的内容。
这个错误是由于您的for
循环的步长等于1,并且您一次读取4个字节。读取后,流位置向前移动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();