<分区>
假设我有一个大小为 4096 的字节数组,什么是获取一大块起始位置的有效方法... 5 个与模式匹配的字节?
例如,我想获取字节数组第一个可能匹配项的起始位置
var match = new byte[] { 0x03, 0x04, 0x05, 0x06, 0x07 };
因此,如果在我的字节数组中找到上述 block ,它将返回第一个字节 (0x03) 的位置
<分区>
假设我有一个大小为 4096 的字节数组,什么是获取一大块起始位置的有效方法... 5 个与模式匹配的字节?
例如,我想获取字节数组第一个可能匹配项的起始位置
var match = new byte[] { 0x03, 0x04, 0x05, 0x06, 0x07 };
因此,如果在我的字节数组中找到上述 block ,它将返回第一个字节 (0x03) 的位置
最佳答案
您可以使用 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;
}
关于c# - 从字节数组中获取字节 block 的起始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400378/