As with all printf() formatting, you use the correct format template specifier. In the case of hexadecimal, you can use either "%x" or "%X", depending on whether you want the alpha digits to be upper or lower case. To get a particular width, with zero padding on the left, you use something like "%08x" (assuming that you want to print the value as an 8 digit hexadecimal number).
For example:
Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
long octval;
char *octend;
long decval;
char *decend;
long hexval;
char *hexend;
if (argc == 2)
{
octval = strtol(argv[1], &octend, 8); /* read as octal */
decval = strtol(argv[1], &decend, 10); /* read as decimal */
hexval = strtol(argv[1], &hexend, 16); /* read as hexadecimal */
printf("The string '%s' can be interpreted thus:\n", argv[1]);
printf(" Oct: %011o (dec %d, hex %08x, %d chars)\n",
octval, octval, octval, (int)(octend - argv[1]));
printf(" Dec: %d (oct %011o, hex %08x, %d chars)\n",
decval, decval, decval, (int)(decend - argv[1]));
printf(" Hex: %08x (oct %011o, dec %d, %d chars)\n",
hexval, hexval, hexval, (int)(hexend - argv[1]));
}
else
{
printf("Usage: %s valuestring\n", argv[0]);
}
return 0;
}