The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"чтение/конвертирование бинарных данных из файла"
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

. "чтение/конвертирование бинарных данных из файла" +/
Сообщение от jd (??), 10-Июн-07, 23:35 
>теперь осталось изменить порядок следования байтов на обратный
>т.к. считывая с файла 01 EB
>получаю 60161
>вместо 491
>
>т.е. после считывания к int конвертирует EB 01 (в файле 01 EB)

Поэтому я и говорил с самого начала про платформу и про "Что вы понимаете под конвертацией в int?".

Порядок следования байт - штука относительная. На интеловской архитектуре всё именно так, как вы говорите, то есть по меньшему адресу находится младший байт, по большему - старший. Таким образом результат, полученный вами, предсказуем и корректен с точки зрения интел. Другое дело, что вам, вероятно нужен другой результат (ведь задачу ставит не производитель процессоров), поэтому нужно точнее описывать, что вы хотите получить. Короче, если не забивать голову, можете просто сделать так:

unsigned char doublebuf[2] = {0}; // обратите внимание на то, что doublebuf теперь unsigned char[]

ifstream rStream( pathfile.c_str(), ios::in | ios::binary );
rStream.read( (char*)doublebuf, 2 )
int n = ((int)doublebuf[0] << 8) | buf[1];


или, используя предыдущий вариант (где целое значение уже получено, но байты не в том порядке), можно сделать так:

int n = 0;
rStream.read((char*)&n, 2);
n = ((n & 0xff) << 8) | (n >> 8); // меняем два младших байта местами (старшие байты равны нулю)


А вообще настоятельно рекомендую почитать академическую литературу. Всё это - основы и без понимания их - никуда.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
чтение/конвертирование бинарных данных из файла, елка, 10-Июн-07, 21:00  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру