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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Sheid
Сообщений: n/a
#1

Вывести содержимое файла в двоичном коде - C++

15.09.2010, 21:28. Просмотров 1910. Ответов 4
Метки нет (Все метки)

Здраствуйте, не могли бы вы помочь с программой?
она должна просто показывать битовое представление чисел, записанных в data.dat, но этого не делает(

Вот текст:
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
#include <stdio.h>
#include <stdlib.h>
 
int main (int argc, const char **argv)
{
char c;
int x0 = 0; int x1 = 0x7fffffff;
int i; int j;
int bit;
FILE *f;
 
f = fopen ("data.dat", "rb");
 
for (i=0; i <= x1 && fread (&c, 1, 1, f); ++i)
 {
  if (i >= x0)
   {
   for (j=8; j>0; --j)
    {
    printf ("%d bit", j);
    bit = (c&(1<<j)?1:0);
    printf ("%d \n", bit);
    }
    printf ("\n");
   }
 }
 fclose (f);
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2010, 21:28     Вывести содержимое файла в двоичном коде
Посмотрите здесь:
C++ Как содержимое файла *.txt переписать в двоичном коде в другой файл?
Вывести число в двоичном коде C++
C++ Чтение файла в двоичном коде
C++ Представить число в двоичном коде и в коде Грея
C++ Вывести содержимое файла на экран
Вывести на экран содержимое файла C++
C++ Подсчёт нулей в двоичном коде
C++ Вывод float в двоичном коде
Как вывести содержимое файла на экран C++
C++ Вывести на экран содержимое текстового файла
C++ Вывести на экран содержимое файла с программой на С
C++ Подсчёт единиц и нулей в двоичном коде

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.09.2010, 17:17     Вывести содержимое файла в двоичном коде #2
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
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
    FILE *pfile = NULL;
    unsigned int val = 0;
    int i = 0;
    
    if((pfile = fopen("file.dat", "rb")) == NULL) {
        fprintf(stderr, "can't open file\n");
        return EXIT_FAILURE;
    }
    
    while(fscanf(pfile, "%d", &val) == 1) {
        for(i = sizeof(val) * 8 - 1; i >= 0; --i)
            printf("%d", ((val >> i) & 1));
            
        printf("\n");
    }
    
    fclose(pfile);
    return EXIT_SUCCESS;
}
Изображения
 
Sheid
Сообщений: n/a
16.09.2010, 17:35     Вывести содержимое файла в двоичном коде #3
А в чем конкретно ошибка была, сказать не можете? Просто на будущее...
А так: "Большое спасибо!"
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.09.2010, 17:43     Вывести содержимое файла в двоичном коде #4
Цитата Сообщение от Sheid Посмотреть сообщение
А в чем конкретно ошибка была, сказать не можете? Просто на будущее...
Я признаться Ваш код не смотрел, когда писал свой. Но сейчас посмотрим...
1) Мне непонятно бесполезное условие в цикле с очень большим числом 0x7fffffff, выглядит надо сказать бредово.
2) Вы читаете числа функцией fread(), это функция производит неформатированное чтение, то есть тупо читает байты. Попробуйте записать число в файл с помощью fwrite и посмотрите, что в нем окажется Если в файле лежат числа в привычной для человека форме (арабская запись) такое чтение не подходит. Форматное чтение обеспечивается с помощью функции fscanf.

Так в принципе все, остальное вполне могло бы работать. Хотя как видите я предпочел считывать числа в переменную типа unsigned int, а не с char.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
16.09.2010, 17:59     Вывести содержимое файла в двоичном коде #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <fstream>
#include <iostream>
#include <iterator>
#include <iomanip>
#include <algorithm>
 
using namespace std;
 
int main(){
    ifstream f( "1.cpp", ios_base::binary );
    if( !f ){
        cout << "cant open file!\n";
        return -1;
    }
    cout << setbase( 2 );
    for_each( istreambuf_iterator<char>( f ), istreambuf_iterator<char>(), [=](char c){
        cout << (unsigned)c;
    } );
}
правда по стандарту в setbase нельзя 2ку совать)) но в gcc канает
Yandex
Объявления
16.09.2010, 17:59     Вывести содержимое файла в двоичном коде
Ответ Создать тему
Опции темы

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