Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
1

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

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

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

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

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

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

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

Вывести битовое представление целого числа со знаком
как можно упростить данный код и исправить ошибки? signed int b; signed int c; signed int d;...

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
Каратель
Эксперт С++
6577 / 3998 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.10.2011, 19:42 4
Цитата Сообщение от revanatar Посмотреть сообщение
т.е. я получу строку с расписанным каждым байтом по битам?
нет вы получите строку байт, разбить их на биты и записать представление бита в файл уже ваша задача
0
30.10.2011, 19:42
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
30.10.2011, 19:49  [ТС] 5
Допустим перевел, сложил, перевел обратно, как склеить новый файл?
0
Kastaneda
Jesus loves me
Эксперт С++
5052 / 3070 / 351
Регистрация: 12.12.2009
Сообщений: 7,763
Записей в блоге: 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
Эксперт С++
5052 / 3070 / 351
Регистрация: 12.12.2009
Сообщений: 7,763
Записей в блоге: 2
Завершенные тесты: 1
30.10.2011, 20:33 8

Не по теме:

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



Добавлено через 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
Эксперт С++
5002 / 2581 / 241
Регистрация: 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
4840 / 3261 / 465
Регистрация: 10.12.2008
Сообщений: 10,569
31.10.2011, 08:14 12
пример делай на двух байтах
в файле всё равно хранятся байты

тебе нужна функция, переводящая байт в набор битов
тебе нужна функция, переводящая набор битов в байт
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1309 / 1224 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
31.10.2011, 11:22 13
Цитата Сообщение от revanatar Посмотреть сообщение
именно бит, не байт
Массива бит не может быть по определению, т.к. минимальная выделяемая единица оперативной памяти - байт. Но ты берёшь этот байт и при помощи масок и сдвигов работаешь с ним как с восемью битами.
0
taras atavin
4199 / 1776 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
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
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1309 / 1224 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
31.10.2011, 16:20 16
C++
1
2
3
4
5
6
7
8
int x = 1;// 1 или 0. восемь разных циферок
int byte = 0;
byte += x;
byte += x<<1;
byte += x<<2;
byte += x<<3;
...
//выводишь byte в файл
0
taras atavin
4199 / 1776 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
31.10.2011, 16:25 17
Цитата Сообщение от revanatar Посмотреть сообщение
с ним было бы в разы проще работать
В разы сложнее. Считай:
1. Извлечь, используя обращение к биту внутри байта.
2. Обработать массив.
3. Собрать снова байты, используя обращение к биту внутри байта.
Итого, как минимум втрое сложнее.
0
fasked
Эксперт С++
5002 / 2581 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
31.10.2011, 16:35 18
Цитата Сообщение от revanatar Посмотреть сообщение
просто массив единиц и нулей, с ним было бы в разы проще работать
Это потому что Вы не достаточно хорошо представляете как применять битовые операции?
0
revanatar
0 / 0 / 0
Регистрация: 28.08.2011
Сообщений: 35
31.10.2011, 17:17  [ТС] 19
Так будут головоломательные циклы, так как мне надо будет каждый раз вытягивать биты из предидущей восьмерки чтобы складывать с текущими
0
fasked
Эксперт С++
5002 / 2581 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
31.10.2011, 17:20 20
Цитата Сообщение от revanatar Посмотреть сообщение
Так будут головоломательные циклы, так как мне надо будет каждый раз вытягивать биты из предидущей восьмерки чтобы складывать с текущими
Пара макросов избавят Вас от этой проблемы.
0
31.10.2011, 17:20
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2011, 17:20

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

Битовое И
Добрый день. Изучаю битовые операции, в частности битовое И. Вот в чём вопрос: 3 &amp; 8 = 0, т.к. ...

Битовое ИЛИ
Есть во многих API такая тема, когда передают в функцию несколько значений в один параметр...


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

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

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