码迷,mamicode.com
首页 > 其他好文 > 详细

进制转换

时间:2015-10-14 16:04:50      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

这是我从一本书搬来的......

算法流程是这样的:

1.先把x进制转成10进制,s[i]*x^i(i = 0..n-1)的和就是x进制在10进制下的表示。

但是在原程序中它却不是这样的形式,我也看不懂,如果记不住就朴素一点,模拟刚才的算法

2.再把10进制转成y进制,用短除法,一直取余,结果要倒着输出...

 

以下是代码:

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

string transform(int x,int y,string s){
    string res = "";
    int sum = 0;
    for (int i = 0;i<s.length();++i)
        {
            if (s[i] == -)
                continue;
            if (s[i]>=a&&s[i]<=z)
                s[i] = s[i]-a+A; 
            if (0<=s[i] && 9>=s[i])
                sum = sum*x+s[i]-0;
            else
                sum = sum*x+s[i]-A+10; 
        }
    while (sum)
        {
            char tmp = sum % y;
            sum /= y;
            if (tmp<=9)
                tmp += 0;
            else
                tmp = tmp-10+A;
            res = tmp+res; 
        } 
    if (res.length() == 0)
        res = "0";
    if (s[0] == -)
        res = -+res;
    return res;
} 


int main()
{
    int a,b;
    char t[30] = ""; 
    scanf("%d %s %d",&a,t,&b);
    printf("%s",transform(a,b,t).c_str());
} 

求轻喷......

进制转换

标签:

原文地址:http://www.cnblogs.com/sorhri/p/jz.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!