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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 15:30   #1
Kravnos
 
Аватар для Kravnos
 
Регистрация: 29.11.2009
Сообщений: 7
Вопрос Вывести на экран шестнадцатиричное представление битового образа из памяти

Среда Borland C++ 3.1
Общая постановка задачи была следующей - вывести на экран представление различных типов данных: целого числа, вещественного, отдельного символа, строки символов, элемента графики; т.е. грубо говоря вывести непосредственно побайтно содержимое ячеек памяти, занятых переменной того или иного типа.

Остановился на том, чтобы вывести на экран шестнадцатеричное представление битового образа, сохраненного с экрана функцией getimage(). Кроме того что первые 2 слова (4 байта, поправьте, если не прав) содержат размер сохраненного изображения, ничего больше о структуре сохраненного образа не нашел
Код:
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <conio.h>
#include <graphics.h>

void main(){
  int iX,i;
  float fX;
  char cX;
  char *sX;
  char *c;
  clrscr();
  //представление целого числа
  cout<<"Integer   => ";
  cin>>iX;
  *c=NULL;
  c = (char*)&iX;
  for(i=(strlen(c)-1);i>=0;i--)
    printf("  [0x%4X]",c+i);
  cout<<endl;
  for(i=(strlen(c)-1);i>=0;i--)
    printf("%10X",*(c+i));
  //представление типа float
  *c=NULL;
  cout<<"\nFloat     => ";
  cin>>fX;
  c = (char*)&fX;
  for(i=(strlen(c)-1);i>=0;i--)
    printf("  [0x%4X]",c+i);
  cout<<endl;
  for(i=(strlen(c)-1);i>=0;i--)
    printf("%10X",*(c+i));
  //представление символа
  *c=NULL;
  cout<<"\nChar      => ";
  cin>>cX;
  c = (char*)&cX;
  for(i=(strlen(c)-1);i>=0;i--)
    printf("  [0x%4X]",c+i);
  cout<<endl;
  for(i=(strlen(c)-1);i>=0;i--)
    printf("%10X",*(c+i));
  //представление строки символов
  *c=NULL;
  cout<<"\nString    => ";
  gets(sX);
  c = (char*)&sX[0];
  for(i=(strlen(c)-1);i>=0;i--)
    printf("  [0x%4X]",(&sX+i));
  cout<<endl;
  for(i=(strlen(c)-1);i>=0;i--)
    printf("%10X",*(c+i));
  getch();
  //представление сохраненного образца графики
  int dr=DETECT,mode;
  int is; //для хранения размера сохраненного фрагмента в байтах
  void * gX; //для хранения ссылки на сохраненное изображение
  initgraph(&dr,&mode,"");
  putpixel(20,20,11);  // просто 3 пикселя, меняя цвет которых,
  putpixel(21,21,13);  // пытался опеределить, там ли я 
  putpixel(22,22,14);  // считываю данные
  is=imagesize(20,20,24,24); //запоминаю размер изображения в байтах 
  getimage(20,20,24,24,gX);
  getch();
  closegraph();
  //тут пытаюсь аналогично предыдущим типам данных вывести содержимое ячеек на экран
  *c=NULL;
  c = (char*)&gX;
  for(i=0;i<is;i++)
    printf("%5X",*(c+i));
  getch();
  
}
Но ,судя по тому, что изменения цвета пикселей никак на выводимые данные не влияет, думаю что код надо кардинально править

Таким вот фрагментом могу почти успешно определить размерность сохранененного изображения:
Код:
*c=NULL;
  c = (char*)gX;
  for(i=0;i<4;i++)
    printf("%5d",*(c+i));
Поделитесь соображениями, инфой, пожалуйста
Желательно помощь кодом.
Адекватность. Как всегда в меньшинстве.

Последний раз редактировалось Kravnos; 29.11.2009 в 18:11. Причина: Дополнил...
Kravnos вне форума Ответить с цитированием
Старый 01.12.2009, 23:49   #2
Kravnos
 
Аватар для Kravnos
 
Регистрация: 29.11.2009
Сообщений: 7
Печаль

Поможите, товарищи. На крайний случай уж скажите просто - возможно ли осуществление такого вывода в С++ 3.1 ?
Адекватность. Как всегда в меньшинстве.
Kravnos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести bmp изображение на экран?? lexuss Паскаль, Turbo Pascal, PascalABC.NET 12 09.04.2011 00:02
сериализовать и вывести на экран байтовый поток olka1198 Общие вопросы по Java, Java SE, Kotlin 1 28.10.2009 15:20
Delphi. вывести на экран таблицу world12_tk Помощь студентам 2 18.10.2009 17:26
Из чисел 1, 1+ 1/2, 1+1/2+1/3 , … вывести на экран те, которые меньше а. umiko Microsoft Office Excel 1 16.05.2009 08:29
Как вывести на экран... (Делфи)!!! DjVidan Помощь студентам 14 09.03.2009 16:31