您的位置:首页 > 其它

简单的实现itoa函数

2014-10-09 00:32 357 查看




一、原型:



char *itoa( int
value, char *string,int radix
);

二、函数说明:

value欲转换的数据。

string:目标字符串的地址。

radix:转换后的进制数,可以是10进制、16进制等。

三、函数简单实现:

#include <iostream>
#include <string>
using namespace std;

char* My_itoa(int value,char str[],int radix)
{
char temp[33];
char *tp = temp;
int i;
unsigned v;
int sign;
char *sp;
if(radix > 36 || radix < 1)
return 0;
sign = (radix == 10 && value < 0); //十进制负数
if(sign)
v = -value;
else
v = (unsigned)value;
while(v || tp == temp)             //转化操作
{
i = v % radix;
v = v / radix;
if(i < 10)
*tp++ = i + '0';
else
*tp++ = i + 'a' - 10;
}
if(str == 0)
str = (char*)malloc((tp - temp) + sign + 1);
sp = str;
if(sign)     //是负数的话把负号先加入数组
*sp++ = '-';
while(tp > temp)
*sp++ = *--tp;
*sp = 0;

return str;
}

int main()
{
long int num;
int radix;     //输入的几进制表示
char str[256];
cout<<"请输入整数和进制数:";
cin>>num>>radix;
My_itoa(num,str,radix);
cout<<"整数转换为字符串后:";
cout<<str<<endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: