/********************************************************************************
┌───────────────────────────┐
│ itoa函数实现 │
│ Visual Studio 2010 测试通过 │
└───────────────────────────┘
********************************************************************************/
#include <iostream>
char* itoa(int num,char* str,int radix);
int main()
{
int ia,iradix;
char string[25];
std::cout << "请输入一个整数" << std::endl;
std::cin >> ia;
std::cout << "请输入要转换的进制" << std::endl;
std::cin >> iradix;
itoa(ia, string, iradix);
std::cout << "您输入的数字是\t" << ia << std::endl;
std::cout << "转换后的字符是\t" << string << std::endl;
return 0;
}
/********************************************************************************
实现itoa函数源码
********************************************************************************/
char* itoa(int num, char* str,int radix)
{
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //索引表
unsigned unum; //中间变量
int i=0,j,k;
//确定unum的值
if(radix==10&&num<0) //十进制负数
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num; //其他情况
//逆序
do
{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='\0';
//转换
if(str[0]=='-') k=1; //十进制负数
else k=0;
//将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果
char temp;
for(j=k;j<=(i-k-1)/2.0;j++)
{
temp=str[j];
str[j]=str[i-j-1];
str[i-j-1]=temp;
}
return str;
}//函数结束
itoa的实现
最新推荐文章于 2017-04-05 15:30:55 发布