// 其他进制数转化成十进制数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
string number;
int change;
int val;//存放输入数字的位数
char num[20];//存放每一位值
int sum = 0;
int zhishu = 1;
int ba = 1;
cout << "please input a number:";
cin >> number;
cout << "请输入转换数的进制(2,8,16):";
cin >> change;
val = number.size();//返回number字符个数
for (string::size_type flag=0; flag!=number.size(); ++flag)//把每个string值分开
{
num[flag] = number[flag];
}
for (int flag3=0,flag2=val; flag2>0; --flag2, ++flag3)
{
zhishu = 1;
if (2 == change)//二进制转换成十进制
{
if ('1' == num[flag3])
{
for (int flag1=0; flag1<flag2-1; ++flag1)
zhishu = zhishu * 2;
sum = sum + zhishu;
}
}
else if (8 == change)//八进制转换成十进制
{
for (int flag1=0; flag1<flag2-1; ++flag1)
zhishu = zhishu * 8;
if ('0' == num[flag3])
ba = 0;
else if ('1' == num[flag3])
ba = 1;
else if ('2' == num[flag3])
ba = 2;
else if ('3' == num[flag3])
ba = 3;
else if ('4' == num[flag3])
ba = 4;
else if ('5' == num[flag3])
ba = 5;
else if ('6' == num[flag3])
ba = 6;
else if ('7' == num[flag3])
ba = 7;
sum = sum + ba * zhishu;
}
else if (16 == change)//十六进制转换成十进制
{
for (int flag1=0; flag1<flag2-1; ++flag1)
zhishu = zhishu * 16;
if ('0' == num[flag3])
ba = 0;
else if ('1' == num[flag3])
ba = 1;
else if ('2' == num[flag3])
ba = 2;
else if ('3' == num[flag3])
ba = 3;
else if ('4' == num[flag3])
ba = 4;
else if ('5' == num[flag3])
ba = 5;
else if ('6' == num[flag3])
ba = 6;
else if ('7' == num[flag3])
ba = 7;
else if ('8' == num[flag3])
ba = 8;
else if ('9' == num[flag3])
ba = 9;
else if (('a' == num[flag3]) || ('A' == num[flag3]))
ba = 10;
else if (('b' == num[flag3]) || ('B' == num[flag3]))
ba = 11;
else if (('c' == num[flag3]) || ('C' == num[flag3]))
ba = 12;
else if (('d' == num[flag3]) || ('D' == num[flag3]))
ba = 13;
else if (('e' == num[flag3]) || ('E' == num[flag3]))
ba = 14;
else if (('f' == num[flag3]) || ('F' == num[flag3]))
ba = 15;
sum = sum + ba * zhishu;
}
else
{
cout << "error!\n";
return -1;
}
}
cout << sum << endl;
return 0;
}
n进制数转换成十进制数
最新推荐文章于 2024-07-19 18:25:12 发布