Нужно вручную заполнить массив байтов величинами разного размера, как сделать правильно? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

мне нужно вручную заполнить массив байтов величинами разного размера. недолго думая, я реализовал это как-то так:
*(char *)(bitmap)        = 'B';
*(char *)(bitmap + 1)    = 'M';
*(int *) (bitmap + 2)    = size + BFILEHEADERSIZE + BINFOHEADERSIZE;
*(int *) (bitmap + 6)    = 0;
*(int *) (bitmap + 10)   = BFILEHEADERSIZE + BINFOHEADERSIZE;
 
*(int *) (bitmap + 14)   = BINFOHEADERSIZE;
*(int *) (bitmap + 18)   = width;
*(int *) (bitmap + 22)   = height;
*(short *)(bitmap + 26)  = 1;
*(short *)(bitmap + 28)  = 24;
*(int *) (bitmap + 30)   = 0;
*(int *) (bitmap + 34)   = size;
*(int *) (bitmap + 38)   = 0;
*(int *) (bitmap + 42)   = 0;
*(int *) (bitmap + 46)   = 0;
*(int *) (bitmap + 50)   = 0;
работает, но на вид - самый настоящий быдлокод. есть более эстетичный способ добиться того же самого?

Решение задачи: «Нужно вручную заполнить массив байтов величинами разного размера, как сделать правильно?»

textual
Листинг программы
#define 0x01 fmt_bmp
#define 0x02 fmt_jpg
#define 0x03 fmt_png
// etc
 
struct MySuperFormat {
  int w;
  int h;
  int bpp;
  int fmt;
  char* data;
};

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы