Просмотр двоичного кода файла в c++

256
13 февраля 2018, 08:23

Записать содержимое входного файла как последовательность бит в другой файл.

То есть, биты конвертировать в байты, и записывать в выходной файл

Answer 1
 //для одного символа
using namespace std;
const char c = 'f';
bitset<8> b(c);
cout << b;
// для строки
const string s;
vector< bitset<8> > v;
copy(s.begin(), s.end(), back_inserter(v));

допустим содержимое файла это строка s или вектор строк, тогда вопрос решен

Answer 2

Разобрался. Открывает файл любого формата, считывает бинарный код и выводит в текстовой документ binaryFileCode.txt .

#include <iostream>
#include <string>
#include <fstream> 
#include <iterator>
using namespace std; 
 int main () 
{  
            //читаем файл как бинарный   
    ifstream fin("<имя файла или полный адрес файла>", ios::binary); 
            //на случай ошибки чтения
    if (!fin)        
            //вывод ошибки
        cout << "Ошибка! Невозможно прочесть файл." << endl; 
            //если файл прочитан, то
    else     
      {         
            //записываем в переменную прочитанный файл
        string str((istreambuf_iterator<char>(fin)), istreambuf_iterator<char>()); 
            //создаём объект для вывода в файл
        ofstream binaryFileCode ;
            //создаём файл, куда будем выводить данные
        binaryFileCode .open("binaryFileCode.txt");
            //записываем в файл данные
        binaryFileCode << str;
            //закрываем файл
        binaryFileCode .close();    
            //выводим сообщение
        cout << "Успешно!";
       }     
 return 0; 
}
Answer 3

Программа открывает файл 1.txt, читает его, и записывает "биты байтами" в 2.txt

#include <iostream>
#include <fstream> // подключаем файлы
using namespace std;
int main() {
    ifstream f("1.txt", ios::binary);
    ofstream o("2.txt", ios::binary);
    char ch;
    if (!f)
    {
        cout << "Error opening file!" << endl;
        system("pause");
        return 0;
    }
    while (f.get(ch))
    {
        for (int i = 7; i >= 0; i--)
        {
            o.write((((int)ch & (int)pow(2, i)) > 0 ? "1" : "0"),1);
        }
    }
    f.close();
    o.close();
    return 0;
}
READ ALSO
Утечка памяти в stringstream

Утечка памяти в stringstream

Имеется черновой код программы, которая ищет числа дающие в третьей или четвертой или пятой степени полиндромыСама программа уже написана...

241
Проверка домена через DNS Google

Проверка домена через DNS Google

Добрый день, помогите пожалуйстаРеализована вот такая простая проверка на подмену ip, но это можно обойти

188
Как моментально сменить обои?

Как моментально сменить обои?

Хочу сменить обои, но никак не могу найти действенный способНашёл вот такой способ, но получается только чёрный экран

255
Один большой файл или много мелких

Один большой файл или много мелких

Нужно записывать последние сообщения пользователей, если до этого было уже записано от него сообщение - перезаписать

211