【发布时间】:2012-04-10 23:28:06
【问题描述】:
我需要编写有效且快速的方法来搜索给定模式的字节数组。 我是这样写的,你怎么看,如何改进?而且它有一个错误,它不能返回长度为1的匹配。
public static bool SearchByteByByte(byte[] bytes, byte[] pattern)
{
bool found = false;
int matchedBytes = 0;
for (int i = 0; i < bytes.Length; i++)
{
if (pattern[0] == bytes[i] && bytes.Length - i >= pattern.Length)
{
for (int j = 1; j < pattern.Length; j++)
{
if (bytes[i + j] == pattern[j])
{
matchedBytes++;
if (matchedBytes == pattern.Length - 1)
{
return true;
}
continue;
}
else
{
matchedBytes = 0;
break;
}
}
}
}
return found;
}
有什么建议吗?
【问题讨论】:
-
你可以看看字符串搜索算法en.wikipedia.org/wiki/String_searching_algorithm
-
最好将算法背后的想法包含在内,而不是在没有解释的情况下粘贴代码。
-
将您的两个字节数组转换为两个逗号分隔的十六进制字符串并进行正则表达式匹配是否足够有效?
标签: c# arrays byte design-patterns match