Поиск битовой последовательности (с заморочкой)

Тема в разделе "WASM.ASSEMBLER", создана пользователем artkar, 24 окт 2005.

  1. artkar

    artkar New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2005
    Сообщения:
    400
    Адрес:
    Russia
    Необходимо осуществить поиск последовательности БИТОВ (!) в бинарном файле!

    Но возникла такая проблема: последовательность не выравнена на байты, то есть допустим надо найти

    последовательность из 9 -ти битов.

    в С++ функция ReadFile требует адрес буфера в параметре lpBuffer, а как объявить указатель на 9 - ть бит

    На ассемблере тоже нет подобных команд, например цепочечные команды требуют определённой размерности элементов цепочки - байт, слово и т.д.

    Ребята помогите кто сможет, как бы решить эту проблему по проще! программа нужна буквально на 5 - 10 минут неохота чтото садиться за кодинг из - за этого на несколько месяцев,

    а то и так столько уже в жизни напрограммировал и лежит потом и неиспользуется!
     
  2. KiNDeR

    KiNDeR New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2003
    Сообщения:
    258
    Адрес:
    Russia
    А что мешает искать байт и проверять нужный 9-й бит в следующем байте, сдвигаясь при каждом шаге на 1 бит?
     
  3. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    ну если программа нужна на 5 - 10 минут, напиши элементарную прогу преобразования bin -> text (т.е. чтоб текстовый файл выдала, типа 1001100111...), и ищи свои последовательности в любом текстовом редакторе.
     
  4. Azrael

    Azrael New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2005
    Сообщения:
    38
    Ну если на 5-10 минут, то только вот аттач. Код не мой, а был откуда-то нагло рипнут под частные нужды, причём вот уже и не припоминаю откуда..

    [​IMG] _691426395__BitLib.zip
     
  5. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    а можно расчитать все возможные байты из данных битов и

    сделать поиск с помошью regexp

    в худшем случае будет 2<sup>14</sup> вариантов

    это если бит скажем 10 то есть b=8*n+2

    где n - количество целых байт

    а b - количество бит
     
  6. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > Код не мой, а был откуда-то нагло рипнут под частные

    > нужды, причём вот уже и не припоминаю откуда..



    Могу напомнить - рипнут он был из JCALG1 Compression Library by Jeremy Collake (jcalg1_d.asm)
     
  7. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    А какой максимальной длины последовательность? Если не больше 24 бит, то там весь "олгоритым" прост, как лопата, и укладывается в пару циклов с одинм AND, одним XOR и одним SHR внутри.
     
  8. artkar

    artkar New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2005
    Сообщения:
    400
    Адрес:
    Russia
    Спасибо всем!!!

    Особенное спасибо Azrael !!!

    Вы мне очень помогли! Помоему это единственный в своем роде нормальный сайт для программеров, где можно решать свои проблемы, а не нести флейм на "околопрограммистскую" тему.

    Вопрос CyberManiac-у почему "...если не больше 24 бит"?