Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бинарные файлы, чтение и запись 
:(
    Опции темы
viktory12345
Дата 5.11.2010, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.6.2010
Где: Севастополь

Репутация: нет
Всего: нет



Доброго времени суток.
При данном коде программы выводятся немного не те данные, которых следует ожидать.

Код программы:
Код

#pragma hdrstop
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <tchar.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
const  int count=16;
int _tmain(int argc, _TCHAR* argv[])
{
__int8 mas[count]={0xBB,0x9,0x0,          
                   0xB9,0x3,0x0,                   
                   0xB8,0x3C,0x0,                       
                   0xF7,0xF1,                   
                   0xD1,0xD8,                   
                   0xD0,0xDB,                   
                   0x90};                               
 
__int8 ch;
int i;
ofstream out("ex.dat", ios::binary);
for(i=0;i<count;i++)
        {
        ch=mas[i];
        out.write((char*)&ch,sizeof(__int8));
        }
 
out.close();
 
ifstream in("ex.dat", ios::binary);
i=0;
        while(in.good())
        {
                in.read((char*)&ch,sizeof(__int8));
                cout<<hex<<int(ch)<<endl;
                i++;
 
                   getch();
        }
 
in.close();
 
return 0;
}


Выводимые данные:

ffffffbb 
9
0
ffffffb9
3
0
ffffffb8 
3c
0
fffffff7 
fffffff1 
ffffffd1 
ffffffd8 
ffffffd0 
ffffffdb 
ffffff90
ffffff90

Т.е. считывается на 1 байт больше, чем было записано. И непонятно откуда вылазит последовательность "FFFFFF". 
Прошу помощи у Вас, потому что я уже перепробывала все имеющиеся у меня варианты.

В массиве представлены коды команд МП Intel8086. И наблюдается закономерность. Корректные байты являются непосредственно байтами данных, а вот с кодами команд происходит что-то не то. 
Спс за время, уделенное моей проблеме.
PM MAIL   Вверх
Estranged
Дата 5.11.2010, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: нет
Всего: 3



Ну еще бы, все нормально работает. 0xBB - это меньше 0 в однобайтовом представлении -69. Работаете вы со ЗНАКОВЫМИ переменными. Как я понимаю, требуется, чтобы пропали ff эти. Тогда сделайте unsigned __int8 ch; и unsigned  __int8 mas. Тогда будет счастье.

Добавлено через 2 минуты и 24 секунды
На будущее: бинарные данные - это unsigned char.
PM MAIL   Вверх
viktory12345
Дата 5.11.2010, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 8.6.2010
Где: Севастополь

Репутация: нет
Всего: нет



Упс, ну да, действительно) Как всегда ошибка по моей невнимательности. Спасибо вам огромное
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0397 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.