I want to print 64 bits hex data in following format:
0x1111_2222_3333_4444
I can think of following:
#define FIRST_MASK 0xFFFF000000000000
#define SECOND_MASK 0x0000FFFF00000000
#define THIRD_MASK 0x00000000FFFF0000
#define FOURTH_MASK 0x000000000000FFFF
val = 0x1111222233334444
printf("0x%04x_%04x_%04x_%04x\n", \
(unsigned int)((val & FIRST_MASK) >> 48),
(unsigned int)((val & SECOND_MASK) >> 32),
(unsigned int)((val & THIRD_MASK) >> 16),
(unsigned int)(val & FOURTH_MASK)
);
Is there a simple (or maybe more clean) way to achieve this?