Преобразование цветового формата 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
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]