zoukankan      html  css  js  c++  java
  • 进制转换

    其他进制向十进制转换:利用一个变量c依次计算每位权重,初始权重为 1,每经过一位就累乘进制数a,c依次等于1,a1,a2,a3 .

    从低位到高位依次遍历各个数位上的数字,与当前的权重相乘;依次累加得到的积,即为转换后的十进制数。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 
     5 int main()//k进制数转换成十进制,十进制转换成m进制数,
     6 {
     7     int a,b;
     8     char bufa[20];
     9     while(scanf("%d%s%d",&a,bufa,&b)!=EOF)
    10     {
    11         int tmp = 0,c = 1,l = strlen(bufa);//tmp为将要计算的a进制数对应的十进制,c为各个数位的权重,
    12         //最低位权重为1,之后每位权重是前一位权重的a倍
    13         for(int i=l-1;i>=0;i--)//从低位到高位遍历每一位上的数
    14         {
    15             int x=0;//计算该位上的数字
    16             if(bufa[i]>='0' && bufa[i]<='9')
    17             {
    18                 x=bufa[i]-'0';//计算其代表的数字
    19             }
    20              else if(bufa[i]>='a' && bufa[i]<='z')
    21                  {
    22 
    23                      x=bufa[i]-'a'+10;
    24                  }
    25              else
    26                  {
    27                      x=bufa[i]-'A'+10;
    28                  }
    29              tmp+=x*c;
    30              c=c*a;//下一位数位权重
    31         }
    32         int s=0;
    33         char bufb[20];
    34         do
    35         {
    36             int x = tmp%b;
    37             bufb[s ++] = (x<10)?(x+'0'):(x-10+'A');//将数字转换成字符
    38             tmp = tmp/b;
    39         }while(tmp!=0);
    40         for(i = s - 1;i >= 0;i --)
    41             printf("%c",bufb[i]);
    42         printf("
    ");
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    Android_存储访问框架SAF
    Android_基础之分辨率
    Android_存储之SharedPreferences
    Android_存储之DataBase之Room
    Android_AndroidX简介&Junit4
    Android_四大组件之ContentProvider
    Android_四大组件之BroadcastReceiver
    Android_四大组件之Service
    Android启动过程_大致流程
    福利来袭,赶紧上车!
  • 原文地址:https://www.cnblogs.com/Xilian/p/3646991.html
Copyright © 2011-2022 走看看