查找字节序列和 return 起始位置

Find a sequence of bytes and return the start position

我有一个大文件,我需要在其中搜索 7 个字节的序列和 return 该序列在该文件中的位置。我不会 post 任何代码,因为到目前为止我无法编写任何像样的代码。谁能指出我正确的方向?也许有一个我不知道存在的功能?

示例 给定一个这样的文件:

我想找到 F8 1E 13 B9 E4 28 88 的位置,在本例中是 0x21

这是一个很好的扩展方法:

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 });