• 任意进制之间的转换


    原创:  

      之前有发一篇进制转换的文章,转换思想在里面,这里不再重复,详情请查看:http://www.cnblogs.com/numen-fan/p/6495009.html

      

    题目描述:
        求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
        不同进制的表示符号为(01,...,9,a,b,...,f)或者(01,...,9,A,B,...,F)。
    输入:
        输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
        数据可能存在包含前导零的情况。
    输出:
        可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(01,...,9,A,B,...,F)。
    样例输入:
    15 Aab3 7
    样例输出:
    210306
    提示:
    可以用字符串表示不同进制的整数。

    代码:

    //任何进制的转换

    void test3(){

        //输入格式,a,n,b;将a进制的n转为b;

        int a,b;

        char str[40];//保存n

        while (scanf("%d%s%d",&a,str,&b)!=EOF) {

            int tmp = 0,lenth = strlen(str),c=1;//tmp表示将a进制数n转为10进制,len为字符串n的长度,c为权重默认为1,最低位嘛,待会转10进制时使用

            for (int i = lenth-1; i>=0; i--) {

                int x;

                if (str[i]>='0'&&str[i]<='9') {

                    x = str[i]-'0';

                }else if(str[i]>='a'&&str[i]<='z'){

                    x = str[i]-'a'+10;

                }else if(str[i]>='A'&&str[i]>='Z'){

                    x = str[i]-'A'+10;

                }

                tmp+=x*c;//转为10进制,乘权重

                c*=a;//增加权重;

            }

            char ans[40],size = 0;

            do{

                int x = tmp%b;//将10进制转为b进制

                ans[size++] = x<10?x+'0':x-10+'A';//进行结果的装填

                tmp/=b;

            }while(tmp);

    //        puts(ans);这里不能这样用,因为ans为正确顺序的倒着的

            for(int i = size-1;i>=0;i--){

                printf("%c",ans[i]);

            }

            printf(" ");

        }

    }

     
  • 相关阅读:
    React生命周期及事件详解
    系统重装后常见的环境变量配置
    Java 字符串格式化
    React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发
    java-json与js-json转化
    RN项目中缩进处理
    React Native 常用学习链接地址
    React-Native 常用组件学习资料链接
    Swift-继承、构造器、类型转换(嵌套)、类扩展、泛型、协议
    CallKit详解(来电提醒+骚扰拦截)
  • 原文地址:https://www.cnblogs.com/numen-fan/p/6495650.html
Copyright © 2020-2023  润新知