Информация об изменениях

Сообщение поменять местами байты в uint32_t от 23.03.2015 20:11

Изменено 23.03.2015 20:13 IROV..

есть

uint32_t color = 0xFFFF00AA;


нужно поменять FF и AA местами

как правильней делать?
преобразовать к uint8_t * и свапнуть 0 и 2 элемент.
либо делать

uint8_t a = (color >> 24) & 0xFF;
uint8_t b = (color >> 16) & 0xFF;
uint8_t g = (color >> 8) & 0xFF;
uint8_t r = (color >> 0) & 0xFF;

uint32_t p_color = (a << 24) + (r << 16) + (g << 8) + (b << 0);


для x84 и для ARM и вообще для мобильных и тд
поменять местами байты в uint32_t
есть

uint32_t color = 0xFFFF00AA;


нужно поменять FF и AA местами

как правильней делать?
преобразовать к uint8_t * и свапнуть 0 и 2 элемент.
либо делать

uint8_t a = (color >> 24) & 0xFF;
uint8_t b = (color >> 16) & 0xFF;
uint8_t g = (color >> 8) & 0xFF;
uint8_t r = (color >> 0) & 0xFF;

uint32_t p_color = (a << 24) + (r << 16) + (g << 8) + (b << 0);


для x84 и для ARM и вообще для мобильных и тд

З.Ы. кроме big endian проблемы