Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2012, 18:34   #1
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию Запись unsigned long в бинарный файл [C++]

Не буду долго расписывать, напишу код.\

Код:
int main()
{
	const std::string path = "E:\\File.bin";

	std::ofstream file(path,std::ios::binary);

	unsigned long X = 0x76010302; //Обратите внимание на порядок байтов

	file.write((char*)&X,sizeof(unsigned long));

	file.close();

	return 0;
}
А теперь смотрю в файл через HEX редактор:


Получается байты записаны в обратном порядке? Почему так? Little-endian? И что мне делать, если мне надо считать из mp3-тега ID3v2.3 4 байта, которые идут в прямом порядке, а читаются они, кстати, тоже в инверсном?
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 04.08.2012, 18:38   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Little-endian?
да.
Цитата:
И что мне делать, если мне надо считать из mp3-тега ID3v2.3 4 байта, которые идут в прямом порядке, а читаются они, кстати, тоже в инверсном?
1)твердо узнать в каком точно порядке записаны.
2)реверсировать байты если надо.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.08.2012, 18:55   #3
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
1)твердо узнать в каком точно порядке записаны.
Да узнал уже что там 4 байта идут в прямом порядке. Они означают размер тега. И если они идут в инверсном, тогда в каждом музыкальном файле тег весит 2 гб
Цитата:
2)реверсировать байты если надо.
Обидно Хотелось бы без лишних циклов обойтись)
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 04.08.2012, 18:58   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

для лонг не нужен цикл в общем то.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.08.2012, 19:26   #5
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
для лонг не нужен цикл в общем то.
Чет никак не могу сообразить как
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 04.08.2012, 19:42   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

через union можно просто получить доступ к байтам, а далее 1-4, 2-3 поменять.
хотя тут и цикл не страшен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.08.2012, 19:44   #7
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
через union можно просто получить доступ к байтам, а далее 1-4, 2-3 поменять.
хотя тут и цикл не страшен.
Точняк union Как редко они мне вообще нужны были, забыл аж про них совсем
Только вот зачем что-то менять, если проще в Union загнать массив из 4-х элементов char и читать байты в нормальном порядке.

Спасибо.

Позже:

Цитата:
Только вот зачем что-то менять, если проще в Union загнать массив из 4-х элементов char и читать байты в нормальном порядке.
Не работает зараза. Всё равно придется менять.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.

Последний раз редактировалось MooNDeaR; 04.08.2012 в 21:11.
MooNDeaR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в бинарный файл структуры Стремящийся Visual C++ 1 18.03.2012 13:01
запись в бинарный файл Shepard90 Общие вопросы C/C++ 2 28.06.2011 08:59
с++ запись в бинарный файл ofstream::write Farrel Общие вопросы C/C++ 1 25.11.2010 00:19
Считывание и запись структур в бинарный файл TheKnyazz Общие вопросы C/C++ 7 10.11.2009 13:47
запись классов в бинарный файл Feannewedd Общие вопросы C/C++ 6 29.06.2009 10:11