I am trying to print hexadecimal values in C.
A simple known program to print hexadecimal value...( Using %x or %X format specifier)
#include<stdio.h>
int main()
{
unsigned int num = 10;
printf("hexadecimal value of %u is %x\n", num, num);
}
Output: hexadecimal value of 10 is a
Instead of getting output as a, I need to get output as 0xa in hexadecimal format (making if more explicit for the user that the value in expresses in hexadecimal format).
There are 2 ways to achieve this:
using 0x%x, which ensures even 0 is printed as 0x0. 0x%X is the only solution to print the x in lowercase and the number with uppercase hexadecimal digits. Note however that you cannot use the width prefix as the padding spaces will appear between the 0x and the digits: printf(">0x%4x<", 100) will output >0x 64<
using %#x, which adds the 0x prefix if the number is non zero and is compatible with the width prefix: printf(">%#6x<", 100) will output > 0x64<, but both printf(">%#06x<", 100) and printf(">0x%04x<", 100) will output >0x0064<.