我有一个大文件,我需要在其中搜索7个字节的序列,然后返回该序列在该文件中的位置。我无法发布任何代码,因为到目前为止我还无法编写任何体面的代码。谁能指出我正确的方向?也许有一个我不知道存在的功能?
我想找到F8 1E 13 B9 E4 28 88
的位置,在这种情况下,该位置在0x21
答案 0 :(得分:0)
这是一个很好的扩展方法:
public static class ByteArrayExtensions
{
public static int IndexOf(this byte[] sequence, byte[] pattern)
{
var patternLength = pattern.Length;
var matchCount = 0;
for (var i = 0; i < sequence.Length; i++)
{
if (sequence[i] == pattern[matchCount])
{
matchCount++;
if (matchCount == patternLength)
{
return i - patternLength + 1;
}
}
else
{
matchCount = 0;
}
}
return -1;
}
}
然后您可以找到它,如下所示:
var bytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x010 };
var index = bytes.IndexOf(new byte[] { 0x03, 0x04, 0x05 });