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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
kashabon
0 / 0 / 0
Регистрация: 25.07.2008
Сообщений: 3
#1

Как побайтно записать целое в файл - C++

25.07.2008, 09:57. Просмотров 1597. Ответов 5
Метки нет (Все метки)

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

Подскажите как побайтно считать файл - C++
Читаю файл побайтно seeker=fseek(olddbf,0, SEEK_SET); numread = fread(list, sizeof(char), 16, olddbf); после того как один раз...

Long int записать в hex побайтно - C++
Всем доброго времени суток... есть long int число, состоящее из 4 байт, нужно их записать в массив char по 2 байта в ячейку, но эти...

Ввести с клавиатуры целое число n и записать в новый файл те слова, которые содержат n или больше согласных - C++
Дана задача: Задан файл формата .txt с текстом на английском языке, ввести с клавиатуры целое число n и записать в новый файл те слова,...

Как побайтно считать бинарник? - C++
Как побайтно считать бинарник? Именно в переменную тип char.

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

Как передать в функцию число и структуру побайтно? - C++
Здравствуйте!!! Нужно написать функцию которая принимает некую структуру и число побайтно.

5
Lord_Voodoo
Супер-модератор
8596 / 2216 / 61
Регистрация: 07.03.2007
Сообщений: 10,775
Завершенные тесты: 1
25.07.2008, 14:16 #2
ну можно маской с помощью побитовой операции and выделить каждый байт и потом писать, а при сборке нужно использовать исключающее или...
вот примитивный код (доведешь уже сам):
Код
int main()
{
  using namespace std;
  int num, num1 = 0;
  int b1 = ' ', b2 = ' ', b3 = ' ', b4 = ' ';
  cin>>num;
  b1 = (num & 0xff000000)>>24;
  b2 = (num & 0x00ff0000)>>16;
  b3 = (num & 0x0000ff00)>>8;
  b4 = (num & 0x000000ff);
  cout<< "b1: "<< int(b1)<<" b2: "<< int(b2)<<" b3: "<< int(b3)<< " b4: "<< int(b4)<<endl;
  num1 = (((((b1<<8) ^b2)<<8)^b3)<<8)^b4;
  cout<<num1<<endl;
  return 0;
}
0
kashabon
0 / 0 / 0
Регистрация: 25.07.2008
Сообщений: 3
25.07.2008, 14:56  [ТС] #3
Благодарю за ответ, но это я в курсе был. Показалось - больно длинно.
По идее в самой машине - все побайтно. потому должно быть просто.

Чо то в голову мысль засела про то что, мол, int = 4 байта и, типа, замутить
char[3]. Ну и указателями переприсвоить. Не прошло - компилятор развонялся.

Или я чего недопонял, или только побитно и сдвигами на байты делить?
Хотелось до дна понять (вспомнить), как это все там происходит.

(Я после оочень длительного перерыва занялся С. Амнезия полная. Вот до чего винда доводит
0
Lord_Voodoo
Супер-модератор
8596 / 2216 / 61
Регистрация: 07.03.2007
Сообщений: 10,775
Завершенные тесты: 1
25.07.2008, 15:05 #4
ну понимаешь, все равно приходится вырезать байты, простым переприсвоением такое не прокатит, будет на конфликт типов ругаться, да и я тебе код простой выложил, можно же все и более изящно сделать... я так сказать сам механизм расписал... так все электронщики делают, ты же к отдельному биту иначе и не обратишься, только побитовыми операциями, на то они и придуманы...
0
XuTPbIu_MuHTAu
Эксперт С++
2230 / 745 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
27.07.2008, 02:01 #5
Если тебе не обязательно использовать fputc и fgetc,
я бы предложил fwrite(...). Мне нравится...)
0
kashabon
0 / 0 / 0
Регистрация: 25.07.2008
Сообщений: 3
28.07.2008, 10:06  [ТС] #6
to WooDooMan666: Ну вот, помогли, товарищ. Все работает. Сапасиб.

to XuTPbIu_MuHTAu: хотел понять я как это делается на низком уровне. А так можно и fwrite(...). ЗАсела эта мысля про char bytes[3] ф башке, теперь можно ее выгнать.
:huh:
0
28.07.2008, 10:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2008, 10:06
Привет! Вот еще темы с ответами:

создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы. - C++
Не могу понять почему не работает вот этот кусок текста. ofstream q (&quot;1.part&quot;); for (int i=0; i&lt;10; ++i) { q &lt;&lt; mas ; ...

Как записать файл в массив? - C++
Добрый день, как записать побитово файл в массив типа int? Возможно ли картинку записать в массив? Нужно не буквы из txt файла, а сами...

Как записать вектор в файл? - C++
Как записать вектора в файл? Вектор содержит тип long long. Записать в одну строчку в виде одного большого числа. ofstream out(imy3);...

Как считать и записать в файл? - C++
Доброго времени суток. Вопрос вот в чем. Реализую md5 алгоритм шифрования и финальным штрихом является считывание из файла незашифрованного...


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

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

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