Упаковка:
int rgba = (a << 24) | (b << 16) | (g << 8) | r;
<<
- оператор левого смещения;|
является побитовым или оператором.
Распаковка:
int r = rgba & 0xff;
int g = (rgba >> 8) & 0xff;
int b = (rgba >> 16) & 0xff;
int a = (rgba >> 24) & 0xff;
>>
- (смещенный *) оператор смещения вправо;&
является побитовым и оператором.
Очевидно, вы можете упаковать / распаковать их в любом порядке.
(*) Вы можете использовать как подписанный, так и неподписанный (>>>
) сдвиг вправо здесь.В этом случае не имеет значения результат.