I am getting 0xABCDABCD.0.1 when I run the following code. I wanted to get the last two bytes 01b0 from val, but the output shows as 1. I am masking the last two bytes using : 0x000000000000FFFF
uint64_t val = 0xabcdabcd010001b0;
int main() {
printf("0x%X.%d.%x",(val&0xFFFFFFFF00000000)>>32,
(val&0x00000000FF000000)>>24,(val&0x000000000000FFFF));
return 0;
}