«Это зависит», а именно от того, какой бит какого цвета.
Часто они отображаются "в обратном направлении", так что красный находится в самых младших битах, зеленый - в "среднем", а синий - сверху (иногда за ним следует альфа, если он используется).
Предполагая 8 бит на компонент, вы получите:
uint32_t abgr = 0x80eeccaa; /* Or whatever. */
const uint8_t red = abgr & 0xff;
const uint8_t green = (abgr >> 8) & 0xff;
const uint8_t blue = (abgr >> 16) & 0xff;
const uint8_t alpha = (abgr >> 24) & 0xff;
Если вы действительно используете порядок компонентов "rgba", поменяйте местами вышеприведенное:
uint32_t rgba = 0xaaccee80; /* Or whatever. */
const uint8_t red = (abgr >> 24) & 0xff;
const uint8_t green = (abgr >> 16) & 0xff;
const uint8_t blue = (abgr >> 8) & 0xff;
const uint8_t alpha = abgr & 0xff;
Обратите внимание, что я сдвигаюсь перед тем, как замаскировать, это хорошо, так как делает константу, которая формирует маску, меньше, что потенциально более эффективно.