C ++ Pack RGBA to unsigned int

Для следующего класса, предполагая, что все RGBA находятся в диапазоне от 0 до 255

class Color {
    public:
        short int r;
        short int g;
        short int b;
        short int a;

Я видел библиотеки, такие как устаревшая библиотека GD, использующая сдвиг бит и &, например

 ((r & 0x7F000000) << 24) & ...

, но я Меня беспокоит, что это может быть медленным, и я бы предпочел более общий подход. Кто-нибудь знает, как я могу упаковать значения RGBA в целое число без знака без использования лишних побитовых операторов (подход GD использует сдвиг на 6-8 бит на байт).

0
задан Precursor 22 July 2011 в 22:33
поделиться