Encontré el siguiente código, y me dijeron que significa que COL_8888_RED
es "endian independiente". ¿Por qué? ¿Qué hace que este endian sea independiente? (He pedido al codificador original, pero que no están recibiendo de nuevo a mí ... diablos quizá que no saben bien.)¿Qué hace que este código sea "endian independiente"?
union _colours {
uint8 c[3][4];
uint32 alignment;
};
static const union _colours col_8888 = {
{ /* B G R A in memory */
{ 0x00, 0x00, 0xFF, 0xFF, }, /* red */
{ 0x00, 0xFF, 0x00, 0xFF, }, /* green */
{ 0xFF, 0x00, 0x00, 0xFF, }, /* blue */
}
};
#define COL_8888_RED *((uint32 *)&col_8888.c[0])
Lo que puede ser endian independiente no es seguro, teniendo en cuenta que algunos hardware diferentes pueden elegir ARGB, BGRA, RGBA, etc. ... –
@ dash-tom-bang, de hecho otros tipos de pantallas requerirán rojo, verde y azul a definir en diferentes órdenes de bytes. Y en este caso, la unión 'col_8888' define rojo, verde y azul para un tipo específico de pantalla y, por lo tanto, define un orden de bytes específico: se usa * solo * para escribir en ese tipo de pantalla. Otros tipos de pantallas requerirán diferentes definiciones de rojo, verde y azul. – BeeBand