簡單的實現itoa函數

一、原型:

char *itoaint 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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章