Как преобразовать 1 байт и 0,5 байта в 1,5 байта(Более подробно в описании)?
Во-первых, байт неделим, это вы чушь несёте.
Во-вторых, число хранится не в hex, а в бинарном виде:
2016 == 0b111_11100000
first = 0b111 == 7
second = 224 == 0b11100000
Собственно, вам надо first сдвинуть влево на 8 и прибавить к этому second.int year = (first << 8) + second;
Тут сложение эквивалентно "логическому или":int year = (first << 8) | second;
гуглить битовые поля. А еще погуглить про выравнивание структур данных.