Я не уверен, правильно ли я понял ваш формат.Соответствует ли эта битовая маска вашему первому значению?
0xC07F0000
Это биты 16-22,30,31 (здесь используется индексирование на основе нуля, т.е. бит 31 - последний бит).
Другойвещь, ваша ценность должна быть подписана или не подписана?
В любом случае, если это так, как я предполагаю, вы можете преобразовать его следующим образом с помощью некоторых битовых масок:
unsigned int val = 0xdeadbeef;
unsigned int mask1 = 0xC0000000;
unsigned int mask2 = 0x007F0000;
unsigned int YourValue = (val&mask1)>>23 | (val&mask2)>>16;
Сделайте это втак же, как с другими вашими ценностями.Определите битовую маску и сдвиньте ее вправо.Готово.
Приветствия