进制转换_全

简介: 进制转换_全
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//检测字符串a的每一位数字是否都小于进制数n
bool cmp(string a,int n){
  int la=a.size();
  for(int i=la-1;i>=0;i--){
    if(a[i]>='0'&&a[i]<='9'&&(a[i]-'0')>n) 
      return false; 
    if(a[i]>='A'&&a[i]<='F'&&(a[i]-'A'+10)>n)
      return false;
    if(a[i]>='a'&&a[i]<='f'&&(a[i]-'a'+10)>n)
      return false;
  }
  return true;
}
//n进制的字符串a 转10进制整数
int SNto10(string a,int n){
  int b=0;
  int la=a.size();
  int q=1;
  for(int i=la-1;i>=0;i--){
    if(a[i]>='0'&&a[i]<='9')
      b+=(a[i]-'0')*q;
    else if(a[i]>='A'&&a[i]<='F')
      b+=(a[i]-'A'+10)*q;
    else if(a[i]>='a'&&a[i]<='f')
      b+=(a[i]-'a'+10)*q;
    q*=n;
  }
  return b;
}
//10进制数字a 转换为n进制的字符串
string S10toN(int a,int n){
  string b="";
  while(a>0){
    if(a%n>9)
      b+=(char)(a%n-10+'A');
    else
      b+=(char)(a%n+'0');
    a/=n;
  }
  reverse(b.begin(),b.end());
  return b; 
}
int main()
{ 
  //测试:字符串"1101AB"转16进制
  string a="1101AB";
  int n=16;
  if(cmp(a,n)){//判断是否每位数字有小于n
    cout<<SNto10(a,n)<<endl;
  }else{
    cout<<"输入有误!"<<endl;
  }
  //测试:10进制整数1114539转16、8、2进制
  cout<<S10toN(1114539,16)<<endl;
  cout<<S10toN(1114539,8)<<endl;
  cout<<S10toN(1114539,2)<<endl;
  return 0;
}
相关文章
|
7月前
二进制和进制转换
二进制和进制转换
93 0
|
1月前
十进制转换为八进制
【10月更文挑战第27天】十进制转换为八进制。
90 23
|
1月前
二进制转换为十进制
【10月更文挑战第27天】二进制转换为十进制。
87 8
|
1月前
八进制转换为二进制
【10月更文挑战第27天】八进制转换为二进制。
64 8
|
1月前
二进制转换为八进制
【10月更文挑战第27天】二进制转换为八进制。
54 7
|
1月前
十进制转换为二进制
【10月更文挑战第27天】十进制转换为二进制。
56 7
|
1月前
八进制转换为十进制
【10月更文挑战第27天】八进制转换为十进制。
66 2
|
6月前
|
存储
详细讲解,进制转换
详细讲解,进制转换
105 0
|
7月前
|
C语言
进制转换间的那点事
进制转换间的那点事