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

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

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

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

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

textual
Листинг программы
  1. #define 0x01 fmt_bmp
  2. #define 0x02 fmt_jpg
  3. #define 0x03 fmt_png
  4. // etc
  5.  
  6. struct MySuperFormat {
  7.   int w;
  8.   int h;
  9.   int bpp;
  10.   int fmt;
  11.   char* data;
  12. };

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы