Преобразование цветового формата UINT32 из AaBbGgRr в AaRrGgBb

Я пытаюсь преобразовать цветовой формат UINT32 из AaBbGgRr в AaRrGgBb в C++. Aa = альфа, Bb = синий, Gg = зеленый Rr = красный. Под преобразованием я подразумеваю переключение значений Bb и Rr. Кто-нибудь знает, как мне этого добиться?

1 ответ

Решение

Вы можете использовать маску и сдвиг битов для достижения этой цели:

uint32_t newValue = oldValue;

newValue = newValue & 0xFF00FF00; // open new space to insert the bits
newValue = ((oldValue & 0xFF)<< 16) | newValue; // change BB

newValue = ((oldValue & 0x00FF0000) >> 16) | newValue; // Change RR
Другие вопросы по тегам