假设我有一个大小为4096的字节数组,有什么方法可以获得一块相当于模式的5字节的起始位置?
例如,我想得到字节数组第一个可能匹配的起始位置
var match = new byte[] { 0x03, 0x04, 0x05, 0x06, 0x07 };
因此,如果在我的字节数组中找到上面的块,它将返回第1个字节的位置(0x03)
答案 0 :(得分:3)
您可以使用Linq:
public static int IndexOfArray<T>(T[] source, T[] search)
{
var result = Enumerable.Range(0, source.Length - search.Length)
.Select(i => new
{
Index = i,
Found = source.Skip(i)
.Take(search.Length)
.SequenceEqual(search)
})
.FirstOrDefault(e => e.Found);
return result == null ? -1 : result.Index;
}