#include<stdio.h>
void Reverse(char *str)
{
char *p = str; //后面的字符
while(*p != '\0')
p++;
char tmp;
for(p--;str<p;str++,p--)
{
tmp = *str;
*str = *p;
*p = tmp;
}
}
//将整数n转成radix进制的字符串.,2<=radix && radix<=36
//例如(123,2)->"1111011";(123,10)->"123";(123,16)->"7B"
void Myitoa(char *str,int n,int radix)
{
int i = 0;//下标
int tmp;//"个位"数
while(n != 0)
{
tmp = n%radix;
if(tmp < 10)
{
str[i] = tmp+'0';
}
else
{
str[i] = tmp-10+'A';
}
n /= radix;
i++;
}
str[i] = '\0';
Reverse(str);
}
int main()
{
char arr[100];
char brr[100];
char crr[100];
Myitoa(arr,123,10);
Myitoa(brr,123,16);
Myitoa(crr,123,2);
printf("%s\n",arr);
printf("%s\n",brr);
printf("%s\n",crr);
return 0;
}
测试结果