c# - 在文件中搜索字节序列 (C#)

标签 c# algorithm file-io pattern-matching

我正在编写一个 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/

相关文章:

algorithm - Groovy 中的简单排名算法

java - 文件读取后无法删除

c - 文件处理 C 程序可以读取的格式

c# - DataGrid WPF 中的 DataGridTemplateColumn 列跨度

c# - 有没有办法为每种转发类型设置不同的生命周期?

c# - 将数据集值保存为整数

c# - 从需要身份验证的 Firebase 数据库加载数据会抛出错误 firebase 无法解析身份验证 token

algorithm - 是否有基于频率的缓存逐出算法?

python - 按照定义的比率赋值

c - 在 Xcode 中打开添加的文件