#include <stdlib.h>
#include <stdio.h>
void itoa(unsigned long val,char *buf,unsigned radix)
{
char *p; // 转换后字符串指针
char *firstdig; / 指针指向第一个数字
char temp; /// 临时字符
unsigned digval; 数字的值
p = buf;
firstdig = p; 保存指向第一个数字指针
do {
digval = (unsigned)(val%radix);
val /= radix; / 得到下一个数字
/********转换成ASCII码,然后保存
if (digval > 9)
*p++ = (char)(digval-10+'a'); 字母
else
*p++ = (char)(digval+'0'); 数字
} while (val > 0);
/**************我们在buffer里存储了数字,但是是反转顺序 *************/
*p-- = '\0'; /// terminate string; p points to last digit
do {
temp = *p;
*p = *firstdig;
*firstdig = temp; swap *p and *firstdig
--p;
++firstdig; // advance to next two digits
} while (firstdig < p); // repeat until halfway
}
int main(void)
{
int number = 0x123a5;
char string[25];
itoa(number,string, 16);
printf("integer = %d string = %s\n", number, string);
return 0;
}
#include <stdio.h>
void itoa(unsigned long val,char *buf,unsigned radix)
{
char *p; // 转换后字符串指针
char *firstdig; / 指针指向第一个数字
char temp; /// 临时字符
unsigned digval; 数字的值
p = buf;
firstdig = p; 保存指向第一个数字指针
do {
digval = (unsigned)(val%radix);
val /= radix; / 得到下一个数字
/********转换成ASCII码,然后保存
if (digval > 9)
*p++ = (char)(digval-10+'a'); 字母
else
*p++ = (char)(digval+'0'); 数字
} while (val > 0);
/**************我们在buffer里存储了数字,但是是反转顺序 *************/
*p-- = '\0'; /// terminate string; p points to last digit
do {
temp = *p;
*p = *firstdig;
*firstdig = temp; swap *p and *firstdig
--p;
++firstdig; // advance to next two digits
} while (firstdig < p); // repeat until halfway
}
int main(void)
{
int number = 0x123a5;
char string[25];
itoa(number,string, 16);
printf("integer = %d string = %s\n", number, string);
return 0;
}