Re[5]: Поиск в двоичном файле
От: TSS Россия http://www.sdl.ru
Дата: 19.12.01 15:54
Оценка: 1 (1)
Здравствуйте rzhitn, Вы писали:

R>Здравствуйте TSS, Вы писали:


TSS>>Тогда просто ищи оптимальный алгоритм поиска, где-то у меня есть один, чем больше кусок "паттерна", тем быстрее ищет...


R>Если можно, кинь на e-mail етот алгоритм а то как-то изобретать велосипед не хочется


Зачем на мыло. Вот он:
--- cut ---
/////////////////////////////////////////////////////////////////////////////
// QSearch ()
// Where = QSearch (pWhere, cbWhere, pWhat, cbWhat)
//
LPBYTE QSearch (LPBYTE s, INT n, LPBYTE p, INT m)
{
  _ASSERTE (m < 256);

  if (m > n)
    return NULL;

  BYTE d[256]; memset(d, m, 256);
  for (int j = 0; j < m - 1; j++)
    d[p[j]] = m - j - 1;

  for (int i = m; i < n; i += d[s[i-1]])
  {
    int j = m, k = i;
    do
    {
      if (--j < 0)
        return (s + k);
      --k;
    }
    while (p[j] == s[k]);

    _ASSERTE(j >= 0);
  }

  return (NULL);
  
} // QSearch

--- cut ---

Ограничения: Паттерн не более 256 байт. Заголовки фреймов MPEG-2, надеюсь, прикрутишь сам...

P.S. Кста, в свое время мне этот код подкинул Alex Fedotov...
P.P.S. 2Alex Fedotov: дело твое живет и процветает ...
Signed, [TSS] /SDL/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.