Задать вопрос

Как преобразовать 1 байт и 0,5 байта в 1,5 байта(Более подробно в описании)?

Есть необходимость хранить год, к примеру текущий - 2016. Делается это следующим образом. Число хранится в 16 исчислении - в данном случае это 7E0. Далее для E0 выделяется 1 байт, для 7 выделяется 0,5 байта. И все это записывается в структуру, а затем в файл необходимого формата. Так вот в чем проблема, я считываю эти данные в переменные, и соответственно я вижу их в 10 представлении - 7 и 224. Как мне получить мою дату ?Я предполагаю нужно выделить 2 байта и записать туда их как-то.
  • Вопрос задан
  • 1118 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя neosapient К ответам на вопрос (4)
@neosapient
VC9, VC11, QT4, QT5, MySQL
Скроме структур есть ещё объединения (union)
#pragma pack(push,1)
union{
  int value;
  struct {
    unsigned char b1;
    unsigned char b2;
    unsigned char b3;
    unsigned char b4;
  }
};
#pragma pack(pop)

теперь к каждому байту можно обращаться по имени b1, b2, b3, b4

А в остальном, учите побитовые операции |, &, ^, а так же побитовый сдвиг <<, >>
Ответ написан