можно попробовать так: typedef union {
struct {
int32_t i24:24;
};
int32_t i32;
}sign_ext_t;
.............
r.i24 = get_adc(...);
r.i32 = r.i24; // для Вашего случая, должно быть заменено одной инструкцией, молиться чтоб компилятор распознал :)
array[i] = r.i32;