进制转换_全

简介: 进制转换_全
#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;
}
相关文章
|
1月前
二进制和进制转换
二进制和进制转换
37 0
|
16天前
|
存储
详细讲解,进制转换
详细讲解,进制转换
|
1月前
|
C语言
进制转换间的那点事
进制转换间的那点事
|
1月前
|
机器学习/深度学习
八进制转换为十进制
八进制转换为十进制。
27 0
|
小程序
ABCDEFG(进制转换::小转大)
ABCDEFG(进制转换::小转大)
67 0
十进制转换为2进制
十进制转换为2进制
74 0
十进制转换为2进制
|
JavaScript 前端开发 数据安全/隐私保护
进制转换以及位运算
进制转换以及位运算
127 0
进制转换以及位运算