#include #include #include int main(int argc, char *argv[]) { union pixel { struct c { unsigned r : 5; unsigned g : 6; unsigned b : 5; } c; uint16_t val; }; union pixel p = {.c.r = 0x1b, .c.g = 0x4, .c.b = 0xa}; printf("%.4" PRIx16 " == %" PRIx16 "\n", p.val, 0x1b | 0x4 << 5 | 0xa << 11); }