将10进制转换成为目标进制表示

将10进制数据转换成为其他进制数据: 明白对数据的基本操作就很容易了。假设10进制数据x转换成d进制的表示,以字符串的方式进行表示。只要按照d进制数据的方式依次取出个位、十位、百位...。存储到一个数组中,然后逆序即可。 实际上更简便的方法是使用printf() 的打印方式可以将数据按照格式中指定的顺序进行输出。

#include <iostream>		/* not use global namespace */

using namespace std;   

int conversion(int n, char s[], int d);
int main() 
{      
	int n, d;
	char result[32];

	while (cin>>n>>d)
		cout<<conversion(n, result, d)<<"\t"<<result<<"\n";
    return 0;
 }

/* 将10进制数据转换成为其他进制数据,目标进制由参数d进行指定 */
int conversion(int n, char s[], int d) /* at most 19 character in dst */
{ 
	static char digits[]="0123456789ABCDEF"; 
	char buf[20];  
	int j, i = 19;  
	buf[i] = '\0';  
	if(d < 2 || d > 16)  
	{   
		return 0;
	}

	do  
	{  
		buf[--i] = digits[n % d];
		n /= d;  
	} while(n && i > 0);
	
	if (n && i <= 0)
	{	s[0] = '\0';	return 0; }

	for(j=0; (s[j]=buf[i]) != '\0'; i++, j++); 
		return j; 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值