我正在编写一个 C# 应用程序,我需要在文件(可能非常大)中搜索字节序列,但我无法使用任何库来执行此操作。因此,我需要一个函数,它将字节数组作为参数并返回给定序列后面的字节的位置。该功能不必非常快,只需能够工作即可。任何帮助将不胜感激:)
最佳答案
如果不需要很快,你可以使用这个:
int GetPositionAfterMatch(byte[] data, byte[]pattern)
{
for (int i = 0; i < data.Length - pattern.Length; i++)
{
bool match = true;
for (int k = 0; k < pattern.Length; k++)
{
if (data[i + k] != pattern[k])
{
match = false;
break;
}
}
if (match)
{
return i + pattern.Length;
}
}
}
但我真的建议您使用 Knuth-Morris-Pratt 算法,该算法主要用作字符串 IndexOf 方法的基础。除了小数组和小模式之外,上面的算法执行速度非常慢。
关于c# - 在文件中搜索字节序列 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278868/