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

Почему запись int в файл происходит в обратном порядке? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Borland C++3.1 http://www.cyberforum.ru/cpp-beginners/thread932062.html
Этот старый "инструмент" стоит уже давно забыть и перейти в более новый? Вообще искал, описаний про него нет, справка на англ тем более не удобна. Всё равно же в современных редакциях Bilder например(это продолжение этого) усовершенственные библиотеки? Ну в общем у новых намного больше возможностей?!
C++ C++ за 21 день Решил изучить C++, порылся в инете насчёт путных учебников и рекомендовали - "Освой самостоятельно C++ за 21 день, 7-е издание (C++11)". Подскажите, стоит ли брать? Или что-то другое выбрать, а то денег шаром покати. :) http://www.cyberforum.ru/cpp-beginners/thread932060.html
Движение по осям в консоли C++
И так, облазив весь ютуб и инет, я не нашёл не одного урока в котором бы описывалось движение по осям x и y. Я бы хотел уроки или код по которому персонаж может двигаться, и ещё бы не плохо было урок про колизию со стенами.
C++ Подскажите книгу по с++, на озоне или другом магазине с доставкой по РФ
Парни помогайте книжной с++, желательно что бы можно было купить на озоне или другом магазине с доставкой по РФ. Знаю паскаль абц (писал гиа спокойно, но глубоко в дебри не залезал), знаю основы HTML и CSS. Желательно такая для начинающих, но что-бы не было, "В первые компьютер появился очень давно....". Главное что бы суть была разжевана хорошо.
C++ Множественные char условия в условных операторах http://www.cyberforum.ru/cpp-beginners/thread932013.html
Такой вопрос. Как сделать условия типа: const char *Type; if (Type == "One" || "ONE" || "one"){} else if (Type == "Two" || "TWO" || "two"){}
C++ Рандом rand Решаю задачу из одной книги, так там нужно чтоб пользователю выбивало число (номер счета), не обязательно рандомное, но я решил что лучше сделать рандом :) Написал вот так: int number_us = rand() % 100; // % 100 делаю для того чтоб число было не больше 100 :) Но когда запускаю прогу она постоянно выбивает одно и то же число (41) :( Подскажите, как это исправить? :) подробнее

Показать сообщение отдельно
zer0mail
Заблокирован
02.08.2013, 09:38     Почему запись int в файл происходит в обратном порядке?
Если не предпринимать специальных усилий, данные из памяти в файл пишутся в том же порядке, как они находятся в памяти. Например, есть структура:
C
1
2
3
4
5
6
7
8
9
10
11
12
struct st{
char c1='a';
char c2='b';
char m[4]={'c','d','e','f');
short int i=0x1234; // 2 байта
int n=0x12345678; // 4 байта
}
В памяти побайтно будет записано так: 
адреса -  x,x+1,x+2,...,x+11
1. 'a','b','c','d','e','f',0x34,0x12,0x78,0x56,0x34,0x12
или так:
2. 'a','b','c','d','e','f',0x12,0x34,0x12,0x34,0x56,0x78
1-й вариант для компьютеров с архитектурой типа intel x86 (ОС - Windows, например), в которых многобайтовые числа расположены в памяти так, что младшие разряды имеют меньший адрес, а старшие - больший.
2-й вариант для компьютеров с архитектурой типа Sparc (ОС -UNIX, например), в которых многобайтовые числа расположены в памяти так, что младшие разряды имеют больший адрес, а старшие - меньший.


Символ Unicode (русская 'A' - 0x0441 ) рассматривается не как массив из 2-х байтов, а как 16 (или 32) -битовое число, поэтому при записи 'A' в файл в формате UTF-16 для Windows в файл запишутся байты 0x41, 0x04 (этот формат называется UTF-16LE, те. Little Endian), а для Unix запишутся байты 0x04, 0x41 (этот формат называется UTF-16BE, те. Big Endian).

Если нужно, чтобы данные передавались в определенном порядке, не зависящем от архитектуры компьютера (например, при передаче по сети), то обеспечивать передачу/прием многобайтовых элементов "нужным концом" надо вручную (библиотеки TCP/IP делают это правильно и для Windows и для Unix).
 
Текущее время: 01:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru