Convert Decimal Number to Hexadecimal String
Convert Decimal Number to Hexadecimal String
/*Convert decimal number to hexadecimal string
* Two utilities for converting decimal numbers to strings containing
* hexadecimal numbers
*/
#include
#include < pascal.h>
char *NumToHex(unsigned short n);
char *NumToHex2(unsigned long n, short digits);
/*
* NumToHex - fixed length, returns a C string
*/
char *NumToHex(unsigned short n)
{
/*
* Declare format static so we can return a pointer to it.
*/
static char format[] = "0xXXXX";
char *conv = "0123456789ABCDEF";
short i;
for (i = 0; i < 4; n >>= 4, ++i)
format[5 - i] = conv[n & 0xf];
return format;
}
/*
* NumToHex2 -- allows variable length, returns a Pascal string.
*/
char *NumToHex2(unsigned long n, short digits)
{
/*
* Declare format static so we can return a pointer to it.
*/
static char format[] = "\p0xXXXXXXXX";
char *conv = "0123456789ABCDEF";
if (digits > 8 || digits < 0)
digits = 8;
format[0] = digits + 2; /* adjust length byte of output string */
for (i = 0; i < digits; n >>= 4, ++i)
format[(digits + 2) - i] = conv[n & 0xf];
return format;
}
main ()
{
printf ("%s\n", NumToHex(16));
printf ("%s\n", PtoCstr(NumToHex2 (30, 2)));
}