У меня есть три значения: uint8_t
, uint16_t
и uint8_t
в этом порядке. Я пытаюсь объединить их с одним uint_32
, не теряя приказ. Я нашел this вопрос отсюда, но я застрял с значением uint_16
в середине.Объединение uint8_t, uint16_t и uint8_t
Например:
uint8_t v1=0x01;
uint16_t v2=0x1001;
uint8_t v3=0x11;
uint32_t comb = 0x01100111;
Я думал о том, выплевывая v2
на два отдельных uint8_t: ■ но понял, что может быть какой-то более простой способ решить эту проблему.
Моя попытка:
v2 = 0x1001;
a = v2 & 0xFF;
b = v1 >> 8;
first = ((uint16_t)v1 << 8) | a;
end = ((uint16_t)b << 8) | v3;
comb = ((uint32_t)first << 16) | end;
Есть операции смены, есть memcpy, и есть место размещения новое, чтобы назвать несколько –