14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
1

Запись двоичного кода в блокнот

17.11.2014, 18:07. Показов 1829. Ответов 11
Метки нет (Все метки)

Здравствуйте, как можно прочитать двоичной код файла, и записать его в блокнот ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2014, 18:07
Ответы с готовыми решениями:

Как организовать побитовую запись двоичного кода (Хаффман) ?
Пытаюсь реализовать алгоритм Хаффмана, который будет сжимать текстовый файл. Уже построено дерево...

Запись двоичного кода в файл
Доброго времени суток. Реализую алгоритм Хаффмана по заданию и не совсем понимаю, как записать биты...

Запись в блокнот
Как на с# создать блокнот, в который будет записываться каждое нажимание клавиши? Такой себе...

Запись в блокнот от 0 до 255 в двоичной СС
Здравствуйте, как написать цикл который запишет в блокнот числа от 0 до 255 в двоичной системы...

11
3452 / 2802 / 766
Регистрация: 25.03.2012
Сообщений: 10,228
Записей в блоге: 1
17.11.2014, 18:09 2
например так. Прочитать файл в бинарном режиме с записью результата в string Пользуй поиск.
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
17.11.2014, 18:26  [ТС] 3
Выдает ошибку:
Код
C:\Users\*****\Desktop\c++\main.cpp|20|error: aggregate 'std::ostringstream oss' has incomplete type and cannot be defined|
0
7082 / 6084 / 2773
Регистрация: 14.04.2014
Сообщений: 26,165
17.11.2014, 18:31 4
Ты всю программу покажи.
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
17.11.2014, 18:33  [ТС] 5
Одну ошибку поборол, теперь появилась другая:
Код
C:\Users\*****\Desktop\C++\main.cpp|14|error: missing template arguments before '(' token|
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <fstream>
#include <bitset>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    ifstream ifs("input.dat", ifstream::binary);
    ostringstream oss;
    unsigned char n;
    ifs.read((char *)&n, 1);
    oss << bitset(n);
    string s = oss.str();
    system("PAUSE");
    return 0;
}
0
7082 / 6084 / 2773
Регистрация: 14.04.2014
Сообщений: 26,165
17.11.2014, 18:34 6
Всю программу в студию. Мы же не видим, что ты там наваял.
0
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
17.11.2014, 18:43  [ТС] 7
Весь код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <fstream>
#include <bitset>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    ifstream ifs("input.dat", ifstream::binary);
    ostringstream oss;
    unsigned char n;
    ifs.read((char *)&n, 1);
    oss << bitset(n);
    string s = oss.str();
    system("PAUSE");
    return 0;
}
Ошибка на 14 строке:
Код
C:\Users\*****\Desktop\C++\main.cpp|14|error: missing template arguments before '(' token
0
3452 / 2802 / 766
Регистрация: 25.03.2012
Сообщений: 10,228
Записей в блоге: 1
17.11.2014, 18:50 8
tdo22, только при чём тут работа с файлами? Ты просто не знаешь, как применяется bitset!
C++
1
 oss << bitset<8>(n);
0
7082 / 6084 / 2773
Регистрация: 14.04.2014
Сообщений: 26,165
17.11.2014, 18:51 9
Лучший ответ Сообщение было отмечено tdo22 как решение

Решение

Это я про <8> забыл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <sstream> 
#include <bitset>
#include <fstream>
#include <iostream>
#include <cstdlib>
 
int main()
{
    std::ifstream ifs("input.dat", std::ifstream::binary);
    std::ostringstream oss;
    unsigned char n;
    ifs.read((char *)&n, 1);
    oss << std::bitset<8>(n);
    string s = oss.str();
    cout << s << endl;
 
    system("pause");
    return 0;
}
Считывает 1 байт и выводит на экран, надо цикл сделать и выводить в файл, если нужно.
1
14 / 14 / 13
Регистрация: 14.02.2013
Сообщений: 787
17.11.2014, 18:59  [ТС] 10
Спасибо, но как сделать так, чтоб мне выводило весь код файла, а не только конец ?

Добавлено через 3 минуты
Сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <windows.h>
#include <fstream>
#include <bitset>
#include <sstream>
#include <iostream>
using namespace std;
 
int main()
{
    ifstream ifs("1.txt", ifstream::binary);
    ostringstream oss;
    unsigned char n;
    while(!ifs.eof())
    {
        ifs.read((char *)&n, 1);
        oss << bitset<8>(n);
        string s = oss.str();
        cout << s;
    }
 
    system("PAUSE");
    return 0;
}
Но теперь весь двоичной код "слипился", и вышло что-то вроде этого:
Код
01101000001101000010110101100111001101010111001001101110000011010000101000001101
00001010001100100011000100110000001101110011001000110000001100000011100000110100
00110010001101110011000100001010000011010000101000110101011010110111010001101001
00101101001101110110100001101000001101000010110101100111001101010111001001101110
00001010000011010000101000110101011010110111010001101001001011010011011101101000
01101000001101000010110101100111001101010111001001101110000011010000101000001101
00001010001100100011000100110000001101110011000100110010001100000011000000111000
00110100001100100011011100110001000010100000110100001010001101010110101101110100
01101001001011010011011101101000011010000011010000101101011001110011010101110010
01101110000010100000110100001010001101010110101101110100011010010010110100110111
01101000011010000011010000101101011001110011010101110010011011100000110100001010
00001101000010100011001000110001001100000011011100110001001110010011001000110000
00110000001110000011010000110010001101110011000100001010000011010000101000110101
Для продолжения нажмите любую клавишу . . .
как сделать пробел между ними ?
0
7082 / 6084 / 2773
Регистрация: 14.04.2014
Сообщений: 26,165
17.11.2014, 19:01 11
Лучший ответ Сообщение было отмечено tdo22 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <sstream> 
#include <bitset>
#include <fstream>
#include <iostream>
#include <cstdlib>
 
int main()
{
    std::ifstream ifs("input.dat", std::ifstream::binary);
    std::ostringstream oss;
    unsigned char n;
    while (true)
    {
    ifs.read((char *)&n, 1);
    if (ifs.eof()) break;
    oss << std::bitset<8>(n) << " ";
    }
    string s = oss.str();
    cout << s << endl;
 
    system("pause");
    return 0;
}
Только файл большой не бери.
1
3452 / 2802 / 766
Регистрация: 25.03.2012
Сообщений: 10,228
Записей в блоге: 1
17.11.2014, 19:04 12
tdo22, а где в коде файла пробелы? Ты о чём вообще? Ты по ходу какое-то левое представление о файлах имеешь! Мешаешь в кучу бинарное и текстовое представление файла... Пробелы бывают только в тексте!

Добавлено через 33 секунды
А... в смысле пробелы между байтами...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2014, 19:04

Запись в текстовый документ (блокнот)
Как осуществить запись в текстовый документ . программа тестирования , необходимо сделать так если...

Запись в файл и открытие его через блокнот
Здравствуйте, создаю файл,записываю в него- все хорошо и потом сразу же пытаюсь открыть программно...

Вывод на экран в 2ой системе и запись в блокнот
как сделать чтоб был вывод на екран в 2ой с.с., и запись данных этих в блокнот. кусок кода...

Запуск двоичного кода
Доброго времени суток. У меня есть некоторой бинарный код: 55 48 89 e5 b8 05 00 00 00 5d c3 Он же...


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

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

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