您的位置:首页 > 编程语言 > C语言/C++

进制转换的c++实现

2013-05-08 16:28 211 查看
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
;
int i = 0;
val = val0;
while(val)
{
buf[(n-1)-i] = '0' + val % m;
val /= m;
i++;
}
buf
= '\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
='\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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++