60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
|
|
1 | |
Разбить файл на биты09.02.2012, 17:04. Показов 13336. Ответов 17
Метки нет (Все метки)
Каким образом осуществить разбиение файла на биты, а потом ещё его желательно будет и собрать.
Пока, собственно вопроса по коду нету, нужны лишь направления в правильную сторону.
0
|
09.02.2012, 17:04 | |
Ответы с готовыми решениями:
17
Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат ... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... Как разбить бинарный файл на младшие и старшие биты Разбить текст на биты |
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
09.02.2012, 17:11 | 2 |
В общем-то он и так разбит на биты, в двоичном виде храниться же... Читаешь по байту, рассматриваешь в нём биты.
0
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
|
09.02.2012, 17:27 | 3 |
Для этого следует использовать класс std::bitset<>.
1
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
||||||
09.02.2012, 19:35 | 5 | |||||
Если писать на простом Си - да, но на C++ следует использовать std::bitset<>.
2
|
retmas
|
09.02.2012, 20:23
#6
|
0
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
||||||
09.02.2012, 21:20 | 8 | |||||
Интересно вы это полезные команды считаете. Если отделить фрагмент, аналогичный коду из сообщения #4, то вот:
0
|
09.02.2012, 21:25 | 9 | |||||
Специально для тебя написал ведь "даже в пересчёте на полезные команды"
Нет, сравнение смысла не имеет. Оно будет иметь смысл когда ты к своему коду допишешь процесс извлечения битов из своего bitset'а. А пока твой код эквивалентент Си'шному коду
0
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
|
09.02.2012, 21:30 | 10 |
С позиции пользователя этот код идентичен (операция индексации). А с точки зрения реализации... Вы что, правда не знаете про инкапсуляцию, или шутите?
0
|
09.02.2012, 21:39 | 11 |
Если честно, не понял, при чём тут компиляция в свете спора обязательности использовать bitset
Добавлено через 1 минуту Вообще мы тут работаем не с массивами а с единичным байтом (ведь вся речь шла о том, что файл читаем побайтно, а затем выдираем из него биты)
0
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
||||||
09.02.2012, 21:43 | 12 | |||||
Как бы как только вы начали говорить об аналогичном коде на чистом Си - вы полезли в дебри реализации. Да, по сути там выходит вышеуказанное присваивание из char в char, даже дополнительные накладные расходы есть. Но это же черный ящик - какая разница, что внутри? Библиотечный класс предоставляет специальный интерфейс для работы с битами, в отличие от обычного массива char[8].
С массивами. Или следующая строка такая неброская?
0
|
09.02.2012, 22:01 | 13 | ||||||||||
Давай возьмём твой пример (отбросив ненужное)
А если всё-таки нужно хранить в памяти всю информацию о битах, то я как-то в описании bitset'а не нашёл, как, например, создать bitset размером в миллион бит и загнать туда 125 тыщ байт
0
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
|
09.02.2012, 22:14 | 14 |
Мне кажется, что не так, ибо иначе разбиение на биты вообще смысла не имеет. Для обыкновенного вывода на экран я нахожу ваш способ достаточным. Но зачем отказываться от универсальности и гибкости кода, экономя при этом пару байт?
Загнать откуда? Из потока, из массива? В обоих случаях алгоритм тривиален (да прибудет с вами Google).
0
|
09.02.2012, 22:21 | 15 |
Я ж не отказываюсь. Я всего лишь пытаюсь оспорить слово "следует", которое в данном контексте можно трактовать как какую-то обязаловку.
Да пофиг откуда. Из описания я вижу, что заполнять большой bitset можно только побитно, но не побайтно
0
|
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
|
|
09.02.2012, 23:00 | 16 |
1
|
09.02.2012, 23:05 | 17 |
Что-то вот здесь http://cplusplus.com/reference/stl/bitset я не увидел операторов <<= и |=, потому и возник такой вопрос
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
11.02.2012, 16:26 | 18 | |||||
0
|
11.02.2012, 16:26 | |
11.02.2012, 16:26 | |
Помогаю со студенческими работами здесь
18
В каждом байте числа обнулить 0-ой и 7-ой биты и сделать единичными 3-ий и 4-ый биты В файл дописываются лишние биты Как записать биты в файл, а затем считать их по-одному Как разбить файл на две части, разархивировать и изменить вторую часть, а потом собрать файл обратно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |