Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 5.00
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
#1

Битовое представление - C++

30.10.2011, 19:19. Просмотров 4168. Ответов 28
Метки нет (Все метки)

Как можно получить любой файл в виде массива бит (именно бит, не байт) чтобы произвести непосредственно над каждым битом действие, и из выходной последовательности бит получить файл (не список бит в текстовом файле, а именно файл из этих бит).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 19:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовое представление (C++):

Битовое представление - C++
Здравствуйте! Напишите пример функции, которая принимает целое число и выводит его битовое представление . int Bit_Representation (int...

Битовое представление int const - C++
Допустим int const i = -128. Но как узнать битовый вид перед тем как искать количество совпадающих единиц в старших 16 и младших 16?

Битовое представление каждого байта - C++
Вывести битовое представление каждого байта в интовой переменной. Прошу объясните как это сделать,можно даже без кода,просто не могу понять...

Функция, зеркально отображающая битовое представление числа - C++
Необходимо написать программу которая зеркально переворачивает битовое представление целого числа, помогите плз

Битовое представление вещественного числа, ошибка в коде - C++
#include <iostream> using namespace std; void binary (double x); //функция вывода представления числа через объединение int...

Битовое И - C++
Добрый день. Изучаю битовые операции, в частности битовое И. Вот в чём вопрос: 3 & 8 = 0, т.к. 1000 0011 (умножение) 0000 ...

28
Сыроежка
Заблокирован
30.10.2011, 19:24 #2
Цитата Сообщение от revanatar Посмотреть сообщение
Как можно получить любой файл в виде массива бит (именно бит, не байт) чтобы произвести непосредственно над каждым битом действие, и из выходной последовательности бит получить файл (не список бит в текстовом файле, а именно файл из этих бит).
Единицей обращения кпамяти компьютера является именно байт. Поэтому вы можете считать файл в виде двоичногопредставления байтов и с ним делатьвсе,что захотите. Просто нужно открыть файл в двоичном фиде и читать его данные в символьный массив.
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
30.10.2011, 19:40  [ТС] #3
т.е. я получу строку с расписанным каждым байтом по битам?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.10.2011, 19:42 #4
Цитата Сообщение от revanatar Посмотреть сообщение
т.е. я получу строку с расписанным каждым байтом по битам?
нет вы получите строку байт, разбить их на биты и записать представление бита в файл уже ваша задача
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
30.10.2011, 19:49  [ТС] #5
Допустим перевел, сложил, перевел обратно, как склеить новый файл?
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
30.10.2011, 20:16 #6
Цитата Сообщение от revanatar Посмотреть сообщение
Допустим перевел, сложил, перевел обратно, как склеить новый файл?
Что с чем склеить? Перевел обратно, получил какую-то последовательность байт, ее и пишешь в файл.
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
30.10.2011, 20:23  [ТС] #7
ну не в файл надо, а файл из выходныи бит, чтобы например если я из того файла что вышел получу опять строку, сделаю обратные действия с битами и запишу в файл - получился исходный файл.
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
30.10.2011, 20:33 #8

Не по теме:

Цитата Сообщение от revanatar Посмотреть сообщение
ну не в файл надо, а файл из выходныи бит, чтобы например если я из того файла что вышел получу опять строку, сделаю обратные действия с битами и запишу в файл - получился исходный файл
блин, несколько раз перечитал, реально понять хотел



Добавлено через 1 минуту
Еще раз:
1. Читаешь файл в бинарном виде.
2. Что-то делаешь с полученными байтами.
3. Пишешь результат обратно в файл (или куда там нужно).
4. Любуешься результатом.
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
31.10.2011, 00:57  [ТС] #9
пример бы хотелось

Добавлено через 2 часа 41 минуту
Делая например так получаю в строку f такое: Rar!
Код
ifstream in("d:\\WinRAR.rar", ios::in|ios::binary);
    string f;
    in>>f;
При чем результат один и тот же с ios::in и без него. Что не так?
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
31.10.2011, 01:07 #10
Цитата Сообщение от revanatar Посмотреть сообщение
При чем результат один и тот же с ios::in и без него. Что не так?
ifstream вроде по-умолчанию "входящий", нэ?
Вам же сказали, читать надо побайтово, строка то здесь при чем?
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
31.10.2011, 01:20  [ТС] #11
ifstream - операции ввода из файла
Хоть бы ктото пример кинул...
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
31.10.2011, 08:14 #12
пример делай на двух байтах
в файле всё равно хранятся байты

тебе нужна функция, переводящая байт в набор битов
тебе нужна функция, переводящая набор битов в байт
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
31.10.2011, 11:22 #13
Цитата Сообщение от revanatar Посмотреть сообщение
именно бит, не байт
Массива бит не может быть по определению, т.к. минимальная выделяемая единица оперативной памяти - байт. Но ты берёшь этот байт и при помощи масок и сдвигов работаешь с ним как с восемью битами.
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
31.10.2011, 11:35 #14
Массив бит ты не получишь, но обращаться к битам можно и над каждым можно выполнять операции. Например, сброс 17-го бита:
C++
1
2
3
//Есть некое данное и зовут его d
char*p=(char *)((void *)&d);
p[2]&=0xBF;
C++
1
2
3
//Есть некий указатель на данное и зовут его d
char*p=(char *)((void *)d);
p[2]&=0xBF;
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
31.10.2011, 16:18  [ТС] #15
я же не говорю что обязательно то биты в своем истинном представлении, просто массив единиц и нулей, с ним было бы в разы проще работать, единственное что непонятно как потом обратить в байты такой массив чтобы из них записать новый файл
0
31.10.2011, 16:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2011, 16:18
Привет! Вот еще темы с ответами:

Битовое сравнение чисел - C++
Создать функцию которая возвращает число, полученное из побитового сравнения трех заданных чисел за следующим образом, если на однаковой...

Битовое чтение файлов - C++
Доброго времени суток! Правильно ли считываются файлы из битового документа, или лучше по-другому это делать? И как можно проверить,...

64 - битовое целое в double, альтернативы - C++
Доброго времени суток! Возникла такая проблема, скажем, есть два 64-битовых числа. Одно из них - размер файла, а другой - сколько байт...

Создать битовое поле для хранения времени - C++
Начали изучать битовые числа, запутался, не могу понять что и как должно реализовывать и как вообще работать с этими битами и для чего((( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.