进制转换的c++实现

void valconvert8_s(unsigned int val, char*& buffer)
{
	int val0 = val; // 保存10进制数
	int m = 8; // 转换的模
	int n = 0; // 8进制位数

	// 统计8进制有几位
	while(val)
	{
		val /= m; 
		n++;
	}

	// 转换8进制生成字符串
	char* buf = new char[n];
	int i = 0;
	val = val0;
	while(val)
	{
		buf[(n-1)-i] = '0' + val % m;
		val /= m;
		i++;
	}
	buf[n] = '\0';

	// 传出参数
	buffer = buf;
}


//十进制到任意2-36进制转换,健壮版 //
//10 to 2=<t<=36
void valconvert8hj(unsigned int val, int t,/*t进制*/ char* &buffer)
{
	int val1=val, n=0;
	char* buf;
	while(val1)//转换数位数
	{
		val1 /= t;
		++n;
	}
	buf=new char[n+1];
	buf[n]='\0';
	buf=&buf[n-1];

	val1=val;
	while(val1)
	{
		*buf--= (val1 % t + '0') >57 ? (val1 % t + '0') + 7 : (val1 % t + '0');//0~9,A(10)~Z(36)
		val1 /= t;
	}
	++buf;
	buffer=buf;
	printf("%d(10)=%s(%d)\n",val,buf,t);
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值