Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 19:27   #1
revanatar
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 23
По умолчанию Битовое представление

Как можно получить любой файл в виде массива бит (именно бит, не байт) чтобы произвести непосредственно над каждым битом действие, и из выходной последовательности бит получить файл (не список бит в текстовом файле, а именно файл из этих бит).
revanatar вне форума Ответить с цитированием
Старый 30.10.2011, 19:37   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Когда Вы читаете из файла int, Вы получаете 32(64) бита. Некоторые языки предоставляют интерфейсы файла как текстового и битового потока, в этом случае нужно задействовать второй. Когда в файл как в битовый поток записывается int, в него записываются 32(64) бита.
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 21:21   #3
revanatar
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 23
По умолчанию

То, мягко говоря, не по теме.
revanatar вне форума Ответить с цитированием
Старый 30.10.2011, 21:42   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

очень даже по теме.
считывая например, char, считываете сразу 8 бит, а как вы уже их обработаете ваше дело.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.10.2011, 21:44   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Сообщение от revanatar Посмотреть сообщение
То, мягко говоря, не по теме.
Это, строго говоря, по теме.
Для примера:
Код:
char ReadFirstByteFromFile(const char* fileName){
    std::ifstream fileBitBuffer = std::ifstream(fileName, std::ios::in|std::ios::binary);
    char buf;
    fileBitBuffer.seekg(0, std::ios::beg);
    fileBitBuffer.read(&buf, 1);
    return buf;
}

Последний раз редактировалось Abstraction; 30.10.2011 в 22:19. Причина: Ошибка при объявлении переменной
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 21:44   #6
revanatar
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 23
По умолчанию

я получаю через поток файл, мне надо его разбить на байты потом на биты
Что в итоге делает это?:
Код:
std::ios::in|std::ios::binary

Последний раз редактировалось revanatar; 30.10.2011 в 21:47.
revanatar вне форума Ответить с цитированием
Старый 30.10.2011, 21:53   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Флаг std::ios::binary говорит "читать файл как есть, в том числе и специальные символы". Приведённый пример прочитает первый байт файла даже если этот байт 0x0D.
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 21:59   #8
revanatar
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 23
По умолчанию

А как прочитать все, если я не знаю сколько их? использовать eof ?
revanatar вне форума Ответить с цитированием
Старый 31.10.2011, 00:54   #9
revanatar
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 23
По умолчанию

Делая так например, получаю в строку f такое: Rar!
Код:
ifstream in("d:\\WinRAR.rar", ios::in|ios::binary);
    string f;
    in>>f;
При чем результат один и тот же с ios::in и без него. Что не так?
revanatar вне форума Ответить с цитированием
Старый 31.10.2011, 00:59   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Читайте не в строку, а в буфер char*, как в приведённом коде. Я не уверен, что тип string нормально воспринимает произвольные байты.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести строчку в битовое представление artem611 Паскаль, Turbo Pascal, PascalABC.NET 5 08.04.2011 19:15
Представление графа. Lodyr Общие вопросы C/C++ 3 13.03.2011 18:00
Представление данных Вечно грустная... Помощь студентам 17 15.02.2011 19:03
представление группировки Domanoff БД в Delphi 13 07.04.2010 18:09