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

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

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

Запись в бинарный файл - C++

19.03.2009, 22:36. Просмотров 9722. Ответов 3
Метки нет (Все метки)

Здравствуйте.
Прошу помочь разобраться с проблемой.
Необходимо записать в двоичный файл 8-байтовое число, но не как строку, а по-байтово само число.
То бишь имеется какой-то бинарник xxx.bin, в него надо записать число, например, 12345678. Не как 31 32 33 34 35 36 37 38, а как 00 00 00 00 00 BC 61 4E.
Как это осуществляется на Си или C++?

Заранее спасибо за ответ)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2009, 22:36     Запись в бинарный файл
Посмотрите здесь:

Запись в бинарный файл - C++
Всем привет. Столкнулся с следующей проблемой при написании курсача,а именно с записью в бинарный в файл: дело в том, что я каждый раз...

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

Запись в бинарный файл - C++
Всем привет. Подскажите пожалста как через fstream добавить запись в бинарный файл ? нужно добавить именно В НАЧАЛО , не очищая...

Запись в бинарный файл - C++
Подскажите как записать данные из StringGrid в бинарный файл и компоновка допустим из 2 StringGrid построчно

Запись в бинарный файл - C++
Скажите пожалуйста, правильно ли работает моя программа? (Имеется ввиду запись в бинарный файл) #include "stdafx.h" #include...

Запись в бинарный файл - C++
Подскажите пожалуйста,где в коде ошибка??никак найти не могу почему х не считает. В файл записываются 0. Задние на картинке. #include...

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

Запись вектора в бинарный файл. - C++
Ребят помогите кто сделать запись в бинарный файл ,а не в текстовый(как в данном коде ) , а то не выходит как то ! заранее спасибо ! ...

Запись вектора в бинарный файл - C++
Здравствуйте, не получаеться написать нормальную запись в файл вектора из обьектов класа. Вот сам клас: public class Human { ...

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

Запись string в бинарный файл - C++
Есть структура: struct Anketa { std::string name, family, brith_Date, tel; }; Надо что бы они записывали в бинарный файл...

Запись в бинарный файл вектора - C++
есть вектор typedef struct Point { double x; double y; Point(double x_, double y_) : x(x_), y(y_) {} ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexiski
Любитель давать советы
338 / 130 / 2
Регистрация: 12.01.2009
Сообщений: 511
19.03.2009, 22:49     Запись в бинарный файл #2
Смотрите, например, функции fopen, fwrite.

Только наиболее распространенные системы little-endian, то есть обычно в файл пишется в обратном порядке: 4E 61 BC 00 00 00 00 00
Kol-yan
Сообщений: n/a
23.03.2009, 19:04     Запись в бинарный файл #3
Да, но fwrite имеет формат:
fwrite(buffer, size, count, stream)
где char *buffer является указателем на записываемые данные.
В моем же случае записывается число, а не строка.
Единственное, что пришло в голову, это попробовать использовать методы привидения типов, в стиле reinterpret_cast. То есть в формате:
fwrite(reinterpret_cast<char*>(buffer), size, count, stream)
Хоть это и дает ожидаемый результат, но я не уверен в корректности этого метода. Может есть другие способы?

Кстати, данные действительно пишутся в обратном порядке "4E 61 BC ...") Как можно поменять порядок их записи?
Alexiski
Любитель давать советы
338 / 130 / 2
Регистрация: 12.01.2009
Сообщений: 511
23.03.2009, 21:56     Запись в бинарный файл #4
Там все-таки стоит void * buffer, а это означает, что любой указатель можно привести к этому типу без явного преобразования:
C++
1
2
long int N = 12345;
fwrite (&N, sizeof(N), 1, f);
Данные пишутся при этом в файл в том же порядке, в котором хранятся в памяти. Если нам нужно их просто записать, а потом прочитать, то об этом можно не думать - запишутся именно так, как нужно для последующего чтения. Если порядок таки важен, то надо либо переворачивать число в памяти, либо записывать по одному байту, начиная с конца, но тут уже от приведения к байтам не уйти.
Yandex
Объявления
23.03.2009, 21:56     Запись в бинарный файл
Ответ Создать тему
Опции темы

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