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

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

Войти
Регистрация
Восстановить пароль
 
 
Oath24binder
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 6
#1

Сформировать в двоичном файле последовательность из N байтов - C++

24.04.2014, 18:32. Просмотров 859. Ответов 21
Метки нет (Все метки)

Сформировать в двоичном файле последовательность из N байтов следующего вида:
00000001 00000010 00000100 ... после 10000000 цикл замыкается.

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

Перестановка байтов в двоичном файле - C++
Здравствуйте! Подскажите пожалуйста, как сделать перестановку байтов в двоичном файле?=(

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

Замена байтов в файле - C++
Есть программа написанная на MFC, вопрос как можно реализовать смену байтов в файле который она открывает если я знаю офсеты 0x000C92AE и...

Изменение порядка байтов в файле - C++
Добрый вечер! Проблема такая: необходимо составить программу, изменяющую порядок байтов в файле на реверсный(последний байт становится...

Собрать int из четырех байтов в файле - C++
Есть файл, данные сохранены последовательно, в основном чары иногда есть 4 байтовые числа, не могу прочитать эти числа в переменную,...

ФТП up\down зависает на 1м файле на 0 байтов у некоторых - C++
такая проблема, у некоторых юзеров фтп upload виснет на 0 байтов, только создается на сервер первый передаваемый файл с нулевым размером и...

21
pav1uxa
1846 / 1698 / 644
Регистрация: 23.01.2014
Сообщений: 6,078
Завершенные тесты: 1
24.04.2014, 18:46 #2
Цитата Сообщение от Oath24binder Посмотреть сообщение
Сформировать в двоичном файле последовательность из N байтов следующего вида:
00000001 00000010 00000100 ... после 10000000 цикл замыкается.
C++
1
2
for (int i = 1; i < 100000000; i*=10)
    printf("%08d\r\n", i);
Вывод:
Код
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
0
IrineK
Заблокирован
24.04.2014, 18:49 #3
Цитата Сообщение от Oath24binder Посмотреть сообщение
Понятия не имею
Ищем:
Побитовый сдвиг влево <<

Добавлено через 2 минуты
pav1uxa,
Читаем:
Цитата Сообщение от Oath24binder Посмотреть сообщение
последовательность из N байтов
int - это не 1 байт, а 4 (чаще всего)
0
pav1uxa
1846 / 1698 / 644
Регистрация: 23.01.2014
Сообщений: 6,078
Завершенные тесты: 1
24.04.2014, 19:02 #4
Цитата Сообщение от IrineK Посмотреть сообщение
int - это не 1 байт, а 4 (чаще всего)
я вывел последовательность из N байтов (8 байт), по 8 бит в каждом. Причем тут тип переменной? Когда вы запишете в бинарный файл число 100 в двоичной (или 4 в шестнадцатиричной) для него это будет один байт - 00000100 в двоичной или 04 в шестнадцатиричной. Просто показал один из примеров вывода, а как из засунуть в бинарный файл это другой разговор. По поводу побитового сдвига тоже самое могу сказать - сдвигать можно и int.
0
IrineK
Заблокирован
24.04.2014, 19:11 #5
Цитата Сообщение от pav1uxa Посмотреть сообщение
я вывел
Цитата Сообщение от pav1uxa Посмотреть сообщение
могу сказать
Советую все же покурить букварь.
Умножайте ваш int на 2.
0
Oath24binder
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 6
24.04.2014, 19:16  [ТС] #6
Поискал, всё равно не понял.
Всё же буду рад, если кто-то сделает или же подробно расскажет мне.
0
pav1uxa
1846 / 1698 / 644
Регистрация: 23.01.2014
Сообщений: 6,078
Завершенные тесты: 1
24.04.2014, 19:18 #7
Цитата Сообщение от IrineK Посмотреть сообщение
Советую все же покурить букварь.
Умножайте ваш int на 2.
Спасибо, но я не курю. Зачем мне умножать мой int? Я показал вывод, он соответствует требованиям. На выходе имеем 8 байт (по 8 бит) в соответствии с условием.
0
IrineK
Заблокирован
24.04.2014, 19:21 #8
Цитата Сообщение от pav1uxa Посмотреть сообщение
На выходе имеем 8 байт (по 8 бит)
Нет.
0
pav1uxa
1846 / 1698 / 644
Регистрация: 23.01.2014
Сообщений: 6,078
Завершенные тесты: 1
24.04.2014, 19:29 #9
Цитата Сообщение от Oath24binder Посмотреть сообщение
Поискал, всё равно не понял.
Всё же буду рад, если кто-то сделает или же подробно расскажет мне.
Надо не искать, а пробовать что-то делать, потом вставлять сюда код и спрашивать почему не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <windows.h>
#include <iostream>
int main() {
    FILE * f;
    f = fopen ("test4.bin", "wb");
    for (int i = 1; i < 256 ; i*=2)
        fputc(i, f);
    fclose (f);
    system("pause");
    return 0;
}
Как пример реализации, если нужен именно бинарный файл.
Цитата Сообщение от IrineK Посмотреть сообщение
Нет.
то есть
Код
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
По-вашему, это не 8 байт? Или в этих байтах не по 8 бит? Что именно тут не так?
0
IrineK
Заблокирован
24.04.2014, 19:45 #10
Цитата Сообщение от pav1uxa Посмотреть сообщение
C++
1
for (int i = 1; i < 256 ; i*=2)
Вот на 2 и надо умножать, а не на 10
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
24.04.2014, 19:53 #11
Цитата Сообщение от pav1uxa Посмотреть сообщение
то есть
нет не 8
Цитата Сообщение от pav1uxa Посмотреть сообщение
По-вашему, это не 8 байт? Или в этих байтах не по 8 бит? Что именно тут не так?
вот это
Цитата Сообщение от pav1uxa Посмотреть сообщение
int i = 1;
размер int это 4 байта (в 32 разрядных системах)
не веришь проверь
C++
1
sizeof (int)
размер 1 байт имеет тип char
0
IrineK
Заблокирован
24.04.2014, 19:59 #12
pav1uxa,
а теперь посмотрите, что у вас получилось именно в файле.

Задача:
Цитата Сообщение от Oath24binder Посмотреть сообщение
00000001 00000010 00000100 ...
идущие подряд.
А что у вас?
0
pav1uxa
1846 / 1698 / 644
Регистрация: 23.01.2014
Сообщений: 6,078
Завершенные тесты: 1
24.04.2014, 20:25 #13
Цитата Сообщение от ValeryS Посмотреть сообщение
размер int это 4 байта (в 32 разрядных системах)
не веришь проверь
Код
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
А где Вы в этих 8 строках увидели слово int, простите? Да и потом, в указанном мной примере int используется, однако формирует правильный файл длинной в 8 байт.

Цитата Сообщение от IrineK Посмотреть сообщение
а теперь посмотрите, что у вас получилось именно в файле.
А я и не говорил что там было готовое решение, я просто показал как вывести числа от 00000000 до 00000001. Хотелось чтобы человек сам подумал хоть чуть-чуть...
0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
24.04.2014, 21:11 #14
Цитата Сообщение от pav1uxa Посмотреть сообщение
А где Вы в этих 8 строках увидели слово int, простите?
а это что
Цитата Сообщение от pav1uxa Посмотреть сообщение
for (int i = 1; i < 256 ; i*=2)
если хотел показать принцип то писал бы хотя бы так
C++
1
for(unsigned char i=1;i;i*=2)
0
pav1uxa
1846 / 1698 / 644
Регистрация: 23.01.2014
Сообщений: 6,078
Завершенные тесты: 1
24.04.2014, 21:29 #15
Цитата Сообщение от ValeryS Посмотреть сообщение
если хотел показать принцип то писал бы хотя бы так
Я писал не про это, а про первое мое сообщение. А это не принцип, это я уже готовый код выложил, который в соответствии с заданием создает файл и записывает в него 8 байт от 00000001 до 10000000. И прекрасно работает с int.

Надо наверное заканчивать это, соглашусь с тем что я ошибся, приношу извинения за флуд...
0
24.04.2014, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 21:29
Привет! Вот еще темы с ответами:

В двоичном файле удалить число, записанное после первого нуля - C++
1. В двоичном файле, элементами которого являются целые числа. Удалить из него число, записанное после первого нуля. Результат записать в...

Как прочитать несколько байтов в файле с n-го байта по m-й байт ? - C++
Как прочитать несколько байтов в файле с n-го байта по m-й байт ?

В заданном двоичном файле с целыми числами заменить нулями все чётные элементы - C++
Дан двоичный файл с целыми числами. Все его четные элементы заменить нулями. Рассмотреть 2 варианта: − исходный файл содержит 13 чисел;...

Вводится последовательность из N целых чисел. Сформировать последовательность, - C++
Вводится последовательность из N целых чисел. Сформировать последовательность, каждый элемент которой равен сумме цифр исходной...


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

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

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