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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Bretbas
Каждому свое
299 / 98 / 27
Регистрация: 05.08.2013
Сообщений: 1,123
Завершенные тесты: 1
#1

Перевод файла в двоичный код - C++

04.07.2014, 00:09. Просмотров 2561. Ответов 19
Метки нет (Все метки)

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

перевод десятичного вещественного в машинный код(двоичный код) - C++
пожалуйста , подскажите пожалуйста код C++ ,для перевода вещественного числа в машиное (двоичное представление,32 бит). Без использования...

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

Перевод чисел в двоичный код - C++
неподскажите как переводить числа в двоичный код в borland C 3.1 под dos

Перевод числа в двоичный код - C++
Знаю вопрос детский но как перевести число в двоичный код, в 16-й и в 8-й знаю %x и %o а вот в двоичный нет.

Перевод double в двоичный код - C++
Здравствуйте! Пожалуйста, скажите в какую сторону смотреть, не пойму как такое реализовать. С интом все просто, нужно делить,...

Перевод любого слова в двоичный код - C++
Требуется создать программу, которая будет переводить любое слова, написанное латинским алфавитом, в двоичную систему. Знаю что такое...

19
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2014, 00:20 #2
Цитата Сообщение от Bretbas Посмотреть сообщение
нужно любой файл перевести в двоичный код.
Любой файл и так двоичный(бинарный).
1
Bretbas
Каждому свое
299 / 98 / 27
Регистрация: 05.08.2013
Сообщений: 1,123
Завершенные тесты: 1
04.07.2014, 00:46  [ТС] #3
как мне получить этот код?и манипулировать с цифрами файла
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2014, 01:00 #4
Читать, в бинарном режиме, байты (в char).
1
Bretbas
Каждому свое
299 / 98 / 27
Регистрация: 05.08.2013
Сообщений: 1,123
Завершенные тесты: 1
05.07.2014, 00:08  [ТС] #5
не пойму все равно как получить нули и единицы в массиве с помощью CreateFile и ReadFile. Покажите пример
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2014, 00:18 #6
При чём здесь нули и единицы, и что за CreateFile и ReadFile?

Добавлено через 2 минуты
Перевод любого файла в бинарный код
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
05.07.2014, 01:15 #7
Где-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
FILE *inp_file=fopen(FileNameInp,"rb");
FILE *out_file=fopen(FileNameOut,"wb");
 
BYTE byte;
char sim;
 
while(!feof(inp_file))
{
  fread(&byte,1,1,file);
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
 
  if(byte>=128)sim='1';
  else sim='0';
  fwrite(&sim,1,1,out_file);
  byte=byte<<1;
}
 
fclose(inp_file);
fclose(out_file);
Добавлено через 1 минуту
Обратное преобразование - тоже самое, только наоборот
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.07.2014, 16:50 #8
Цитата Сообщение от Bretbas Посмотреть сообщение
не пойму все равно как получить нули и единицы
на кой это надо?
0
Bretbas
Каждому свое
299 / 98 / 27
Регистрация: 05.08.2013
Сообщений: 1,123
Завершенные тесты: 1
05.07.2014, 23:40  [ТС] #9
Jupiter, хочу кое че замутить)
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.07.2014, 23:44 #10
ну так прочил байты и разложи каждый байт на 0 и 1 с помощью битовых операций
0
Bretbas
Каждому свое
299 / 98 / 27
Регистрация: 05.08.2013
Сообщений: 1,123
Завершенные тесты: 1
06.07.2014, 00:43  [ТС] #11
Jupiter, а вообще байт могу получить как число? Я могу его получить в тип DWORD и вывести на экран?
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
06.07.2014, 01:02 #12
Цитата Сообщение от Bretbas Посмотреть сообщение
DWORD
DWORD - это 4 байта. Впихнуть можно, но зачем? Лучше из файла тогда считывать по 4 байта, но тогда в конце может остаться меньше 4 байт, если размер файла не кратен 4.
Цитата Сообщение от Bretbas Посмотреть сообщение
а вообще байт могу получить как число
Не просто можешь. Скорее даже не можешь иначе - любые данные в компе это числа.

Добавлено через 7 минут
char - это тоже число. Только при работе функций, связанных с текстом, комп пользуется соответствием число-символ(UNICODE и т.п.). Главное считывать-записывать файлы в бинарном режиме.

C++
1
2
3
4
char A='a';
char B='b';
 
if(A<B)cout<<"<Буква a меньше, чем буква b"<<endl;
- это нормально. A и B здесь в первую очередь числа, а уже потом символы.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2014, 04:00 #13
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
string dec_to_bin(int dec)
{
    string bin;
    int b = 0;
    int q = 0;
    
    if (dec != 0)
    {
        while (true)
        {
            q = dec / 2;
            if (q == 0) 
            {
                bin.insert(bin.begin(), '1');
                break;
            }
            b = dec % 2;
            if (b == 0) 
                bin.insert(bin.begin(), '0');
            if (b == 1) 
                bin.insert(bin.begin(), '1');
            dec = q;
        }
    }
    else bin.insert(bin.begin(), '0');
    
    // выравнивание по байту
    unsigned int number_bit = bin.size();
    unsigned int c = (number_bit % 8); 
    if (c != 0)
        for (unsigned int i = 0; i < 8 - c; i++)
            bin.insert(bin.begin(),'0');
    
    return bin;
}
 
int main()
{
    const char* FileNameIn  = "1.txt";
    const char* FileNameOut = "2.txt";
    
    ifstream in(FileNameIn, ios::binary);
    if (!in)
        cout << "Error!" << endl;
    else
    {
        ofstream out(FileNameOut);
 
        unsigned char byte;
        while(in.read((char*)&byte, 1)) // читаем байты из файла
            out << dec_to_bin(byte); // записываем двоичное представление байтов
          
        in.close();
        out.close();
    }
        
    system("pause");
    return 0;
}
0
Bretbas
Каждому свое
299 / 98 / 27
Регистрация: 05.08.2013
Сообщений: 1,123
Завершенные тесты: 1
06.07.2014, 23:03  [ТС] #14
Retyrn0, то есть мне байты нужно считывать как тип char ,а как потом посмотреть число по этому считаннному байту char?
0
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
06.07.2014, 23:43 #15
Цитата Сообщение от Bretbas Посмотреть сообщение
то есть мне байты нужно считывать как тип char
Посмотреть==вывести на экран? Я так понял нужно преобразовать в последовательность символов 1 и 2 - тогда просто работай с char-ом, как с обычным числом.

Добавлено через 7 минут
Если выводить на экран, нужно указать функции, чтобы она работала с числом, а не символом. Вот пример: программа выводит на экран значение одной и той же переменной, но в одном случае, как число, а во втором - как символ...

C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main()
{
    for(unsigned int c=0;c<256;c++)
    {
        printf("%d  -   %c\n",c,(char)c);
    }
 
    return 0;
}
Добавлено через 4 минуты
Разобрался?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2014, 23:43
Привет! Вот еще темы с ответами:

Перевод едениц и нулей из блокнота в двоичный код - C++
Доброго времени суток , столкнулся с некоторой проблемой: Имеется .txt файл с записаной последовательностью нулей и едениц 11 00 10 01 ,...

Перевод массива десятичных чисел в двоичный код - C++
Есть такого вида код: #include &lt;iostream&gt; using namespace std; int i,j; void main() { setlocale(0, &quot;&quot;); int a, b; cout &lt;&lt;...

Перевод строки цифр произвольной длины во внутреннее двоичный код и обратно - C++
Необходимо написать функции, которые переводят строку цифр в двоичный код (во внутреннем представлении) и обратно. Например: char a =...

Как узнать двоичный код файла? - C++
...То есть разложить на единицы и нолики.


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
06.07.2014, 23:43
Ответ Создать тему
Опции темы

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