Считывание данных по битам.

Тема в разделе "WASM.BEGINNERS", создана пользователем ZZZ_ZZZ, 6 июл 2006.

  1. ZZZ_ZZZ

    ZZZ_ZZZ New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    2
    Добрый день!
    У меня возникла такая проблема:
    допустим на жестком диске хранится файл под названием '123.exe'.
    Мне необходимо считать по битам весь этот файл.
    Каким образом мне это сделать?
     
  2. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    читай по байтам, после каждого в цикле
    unsigned char bt;

    while(!feof(fh)
    {
    fread(&bt, 1, 1, fh);
    for (int i = 0; i < 8; ++i)
    {
    nex_bit = (bt >> 1) & 1;
    // .. тут обработка
    }
    }
     
  3. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    LoL. Такое уже было на Delpimaster.Ru. Расхожая шутка - человеку казалось, что побитное чтение будет быстрее побайтного. Разочарование наступило позже - когда выяснилось что данные читаются секторами...
     
  4. ZZZ_ZZZ

    ZZZ_ZZZ New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2006
    Сообщения:
    2
    попытаюсь изложить свою задачу поконкретнее.
    1. мне нужно определить начало расположения файла 123.exe на винчестере
    2. считать этот файл от начала до конца (разницы нет по битам или по байтам)
    3. стереть файл. т.е. все единицы заменить нулями
    4. код программы желательно на ассемблере
     
  5. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    ZZZ_ZZZ
    Вот это уже не так просто - код объемистый, раз должен поддерживать разные файловые системы. Врядли здесь кто-то поделиться бескорыстно такой полезной штукой.
    Впрочем есть и чуть более универсальный (независимый от файловой системы) и сложный способ, но требующий запуска драйвера в режиме ядра.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    1) Почему не API? Ищешь файл, открываешь, стираешь.
    2) Зачем считывать, если всё равно записывать одни нули хочешь?
    3) Почему только единицы? Не проще ли просто-напросто затереть весь файл нулями? Эффект тот же, но во много раз быстрее будет.
    4) Почему именно ассемблер?
     
  7. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Это типа wipefile? В нортон-утилитах была такая - файл как известно не стирается при удалении, поэтому утилита забивала его содержимое нулями. Непонятно только, зачем определять начало расположения? Открываешь файл, определяешь его длину, забиваешь нулями, а потом удаляешь. И все с помощью API.
     
  8. 1BB253E

    1BB253E New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2006
    Сообщения:
    10
    ИМХО очень просто открываем файл на запись и пишем сначала до конца нули или единицы Н-ное количество раз. Непонял только для чего его считывать...