十六进制转十进制

来源:互联网 发布:乐视max2怎么改mac 编辑:程序博客网 时间:2024/06/05 18:13

#include "iostream"#include "string"using namespace std;int main(){string  s_16;cin>>s_16;int length=s_16.length();if(length>8){cout<<"the number error"<<endl;exit(0);}long long number=0;int* array=new int[length];for(int i=0;i<length;i++){switch(s_16[i]){                  case '0':array[i]=0;break;                  case '1':array[i]=1;break;                  case '2':array[i]=2;break;                  case '3':array[i]=3;break;                  case '4':array[i]=4;break;                  case '5':array[i]=5;break;                  case '6':array[i]=6;break;                  case '7':array[i]=7;break;                  case '8':array[i]=8;break;                  case '9':array[i]=9;break;                  case 'A':array[i]=10;break;                  case 'B':array[i]=11;break;                  case 'C':array[i]=12;break;                  case 'D':array[i]=13;break;                  case 'E':array[i]=14;break;                  case 'F':array[i]=15;break;              }  }for(int i=0;i<length;i++){long long add=1;for(int j=0;j<i;j++){add*=16;}//难点是关于add,i=1时,add直接是1不循环number+=array[length-i-1]*add;//输入最高位和数组最高位恰好相反,一定要留意}printf("%I64d",number); return 0;}

这里用了array存储每位16进制数,有点巧妙

add关于i=1情况

1 0