【发布时间】:2013-06-28 07:58:56
【问题描述】:
假设我有一个大小为 4096 的字节数组,有什么有效的方法来获取与模式匹配的一个块的起始位置... 5 个字节?
例如,我想获取字节数组的第一个可能匹配的起始位置
var match = new byte[] { 0x03, 0x04, 0x05, 0x06, 0x07 };
因此,如果在我的字节数组中找到上述块,它将返回第一个字节的位置 (0x03)
【问题讨论】:
-
如果您的搜索模式在 {0x03, 0x05},您希望看到什么样的结果?
-
另请参阅使用 Boyer-Moore 模式匹配算法的答案(这可能是我想要的):stackoverflow.com/a/9890164/106159
-
+1 表示
Boyer-Moore's模式,它非常有效,因为它会跳过不匹配的字节而不是暴力破解所有字节。
标签: c# .net arrays algorithm bytearray