Как записать 4 8 битных переменных в одну 32 битную
Подскажите, можно ли записать это более компактно?
uint32_t val = 0;
val = byte4;
val=val<<8;
val |= byte3;
val=val<<8;
val |= byte2;
val=val<<8;
val |= byte1;
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Схема Горнера:
uint32_t val = (((uint32_t)byte4 << 8 | byte3) << 8 | byte2) << 8 | byte1;
Сумма "степеней":
uint32_t val = (uint32_t)byte4 << 24 | (uint32_t)byte3 << 16 | (uint32_t)byte2 << 8 | byte1;
P.S. Добавлены приведения чтобы сделать все вычисления корректными в случае когда переменные byte* имеют тип меньший чем uint32_t, например uint8_t.