精华内容
下载资源
问答
  • 喜欢请您点赞,关注@悟禅禅 ,为您解决#Excel# 与#vba# 的难题在软件开发的过程中,进制转换一直是一个必要而又麻烦的工作。虽然进制转换的原理并不难,但在不借助工具的前提下计算出结果依然是个折磨人的事情。...

    喜欢请您点赞,关注@悟禅禅 ,为您解决#Excel# 与#vba# 的难题

    在软件开发的过程中,进制转换一直是一个必要而又麻烦的工作。虽然进制转换的原理并不难,但在不借助工具的前提下计算出结果依然是个折磨人的事情。

    Excel中BASE()函数可以将十进制的数值快速的转换成16进制,8进制和2进制。

    例一、将十进制数值“100”,分别转换成十六进制数值,八进制数值和二进制数值。

    aa3973cb5dd75de3a6bb77749a14b109.png

    头@条@号“悟禅禅”原创

    在单元格B3写入数值100后,在单元格C3中写入公式“=BASE(B3,16)”,就得到了100对应的16进制数值为“64

    71479572dcec65fb70280c13844032e1.png

    头@条@号“悟禅禅”原创

    8b1a1a742cc36f8d9f4598d95aad6779.png

    头@条@号“悟禅禅”原创

    在单元格D3中写入公式"=BASE(B3,8)",得到100对应的8进制数值“144”。

    f422c4c697886a085e6bb213e3317492.png

    头@条@号“悟禅禅”原创

    1b6952ac5e73b05f425f08e01e2445de.png

    头@条@号“悟禅禅”原创

    在单元格E3写入公式“=BASE(B3,2)”,得到100对应的2进制数值“1100100”。

    524287a56f9812f22146816ed1863d89.png

    头@条@号“悟禅禅”原创

    09b9d0e459338305c3fc72150071f02f.png

    头@条@号“悟禅禅”原创

    在二进制数值的转换中,好多时候都希望结果有一个固定的位数,那么我们可以把上面的结果的位数固定到12位。将公式改为“=BASE(B3,2,12)

    b070bbecdbde7f017a52ef6444133e3a.png

    头@条@号“悟禅禅”原创

    得到一个高位补0的12位二进制结果“000001100100

    c54b588b713b92e146fff25ba871e040.png

    头@条@号“悟禅禅”原创

    例二、当尝试将非数值进行转换的时候会会返回错误码“#VALUE!”,比如写入公式“=BASE("a",2,12)

    727b75e86cd145fdac665423815b4c72.png

    头@条@号“悟禅禅”原创

    17609ba0f702ac050380e270aa54bd82.png

    头@条@号“悟禅禅”原创

    例三、当对含有小数的数值进行转换的时候,公式只对整数部分进行转换

    73c6956caa09ab6a3ba863dd9ced8b96.png

    头@条@号“悟禅禅”原创

    f89597f33ac4a457714ef77fbcab5f71.png

    头@条@号“悟禅禅”原创

    与“BASE()函数”相对应的函数“DECIMAL()”函数的功能则是将不同进制的数值转换成十进制,感兴趣的小伙伴不妨看看我写的关于“DECIMAL()”函数的微头条。

    喜欢请您点赞,关注@悟禅禅,为您解决Excel与Vba的难题。

    #Excel技巧##财务Excel表格#

    展开全文
  • C语言进制转换相关函数

    千次阅读 2019-06-12 21:28:16
    C语言进制转换相关函数 所需头文件 #include <stdio.h> #include <string> #include <string.h> #include <map> #include <iostream> using namespace std; 十进制转二进制 //十...

    C语言进制转换相关函数

    所需头文件

    #include <stdio.h>
    #include <string>
    #include <string.h>
    #include <map>
    #include <iostream>
    
    using namespace std;
    

    十进制转二进制

    //十进制转二进制 
    string Decimal_to_Binary(int decimal, int bits)// decimal为所要转换的十进制数,bits为输出位数 
    {
     char bin[bits+2];
     bin[0] = '0';
     bin[1] = 'b';
     
     
     int quotient = decimal; //商
     int remainder = 0; //余数
     
     int i;
     
     for(i=bits+2; i>2; i--)
     {
      remainder = quotient % 2;
      switch(remainder)
      {
       case 0:
        {
         bin[i-1] = '0';
         break;
        }
       case 1:
        {
         bin[i-1] = '1';
         break;
        }
       default:
        {
         break;
        }
      }
      quotient = quotient / 2;
     }
     return bin;
    }
    

    十进制转八进制

    //十进制转八进制 
    string Decimal_to_Octal(int decimal, int bits)// decimal为所要转换的十进制数,bits为输出位数
    {
     char octal[bits+1];
     octal[0] = '0';
     
     
     int quotient = decimal; //商
     int remainder = 0; //余数
     
     int i;
     
     for(i=bits+1; i>1; i--)
     {
      remainder = quotient % 8;
      switch(remainder)
      {
       case 0:
        {
         octal[i-1] = '0';
         break;
        }
       case 1:
        {
         octal[i-1] = '1';
         break;
        }
       case 2:
        {
         octal[i-1] = '2';
         break;
        }
       case 3:
        {
         octal[i-1] = '3';
         break;
        }
       case 4:
        {
         octal[i-1] = '4';
         break;
        }
       case 5:
        {
         octal[i-1] = '5';
         break;
        }
       case 6:
        {
         octal[i-1] = '6';
         break;
        }
       case 7:
        {
         octal[i-1] = '7';
         break;
        }
       default:
        {
         break;
        }
      }
      quotient = quotient / 8;
     }
     return octal;
    }
    

    十进制转十六进制

    //十进制转十六进制 
    string Decimal_to_Hexadecimal(int decimal, int bits)// decimal为所要转换的十进制数,bits为输出位数
    {
     char hexadecimal[bits+2];
     hexadecimal[0] = '0';
     hexadecimal[1] = 'x';
     
     
     int quotient = decimal; //商
     int remainder = 0; //余数
     
     int i;
     
     for(i=bits+2; i>2; i--)
     {
      remainder = quotient % 16;
      switch(remainder)
      {
       case 0:
        {
         hexadecimal[i-1] = '0';
         break;
        }
       case 1:
        {
         hexadecimal[i-1] = '1';
         break;
        }
       case 2:
        {
         hexadecimal[i-1] = '2';
         break;
        }
       case 3:
        {
         hexadecimal[i-1] = '3';
         break;
        }
       case 4:
        {
         hexadecimal[i-1] = '4';
         break;
        }
       case 5:
        {
         hexadecimal[i-1] = '5';
         break;
        }
       case 6:
        {
         hexadecimal[i-1] = '6';
         break;
        }
       case 7:
        {
         hexadecimal[i-1] = '7';
         break;
        }
       case 8:
        {
         hexadecimal[i-1] = '8';
         break;
        }
       case 9:
        {
         hexadecimal[i-1] = '9';
         break;
        }
       case 10:
        {
         hexadecimal[i-1] = 'a';
         break;
        }
       case 11:
        {
         hexadecimal[i-1] = 'b';
         break;
        }
       case 12:
        {
         hexadecimal[i-1] = 'c';
         break;
        }
       case 13:
        {
         hexadecimal[i-1] = 'd';
         break;
        }
       case 14:
        {
         hexadecimal[i-1] = 'e';
         break;
        }
       case 15:
        {
         hexadecimal[i-1] = 'f';
         break;
        }
       default:
        {
         break;
        }
      }
      quotient = quotient / 16;
     }
     return hexadecimal;
    }
    

    二进制转十进制

    //二进制转十进制 
    int Binary_to_Decimal(char Binary[])// decimal为所要转换的二进制数,输入时加上前缀“0b” 
    {
     int length = strlen(Binary);
     int i;
     int decimal = 0;
     for(int i=2; i<length; i++)
     {
      decimal = decimal * 2;
      switch(Binary[i])
      {
       case '0':
        {
         break;
        }
       case '1':
        {
         decimal = decimal + 1;
         break;
        }
       default:
        {
         break;
        }
      }
     }
     return decimal;
    }
    

    八进制转十进制

    //八进制转十进制 
    int Octal_to_Decimal(char Octal[])// decimal为所要转换的二进制数,输入时加上前缀“0” 
    {
     int length = strlen(Octal);
     int i;
     int decimal = 0;
     for(int i=1; i<length; i++)
     {
      decimal = decimal * 8;
      switch(Octal[i])
      {
       case '0':
        {
         break;
        }
       case '1':
        {
         decimal = decimal + 1;
         break;
        }
       case '2':
        {
         decimal = decimal + 2;
         break;
        }
       case '3':
        {
         decimal = decimal + 3;
         break;
        }
       case '4':
        {
         decimal = decimal + 4;
         break;
        }
       case '5':
        {
         decimal = decimal + 5;
         break;
        }
       case '6':
        {
         decimal = decimal + 6;
         break;
        }
       case '7':
        {
         decimal = decimal + 7;
         break;
        }
       default:
        {
         break;
        }
      }
     }
     return decimal;
    }
    

    十六进制转十进制

    //十六进制转十进制 
    int Hexadecimal_to_Decimal(char Hexadecimal[])// decimal为所要转换的二进制数,输入时加上前缀“0x” 
    {
     int length = strlen(Hexadecimal);
     int i;
     int decimal = 0;
     for(int i=2; i<length; i++)
     {
      decimal = decimal * 16;
      switch(Hexadecimal[i])
      {
       case '0':
        {
         break;
        }
       case '1':
        {
         decimal = decimal + 1;
         break;
        }
       case '2':
        {
         decimal = decimal + 2;
         break;
        }
       case '3':
        {
         decimal = decimal + 3;
         break;
        }
       case '4':
        {
         decimal = decimal + 4;
         break;
        }
       case '5':
        {
         decimal = decimal + 5;
         break;
        }
       case '6':
        {
         decimal = decimal + 6;
         break;
        }
       case '7':
        {
         decimal = decimal + 7;
         break;
        }
       case '8':
        {
         decimal = decimal + 8;
         break;
        }
       case '9':
        {
         decimal = decimal + 9;
         break;
        }
       case 'a':
        {
         decimal = decimal + 10;
         break;
        }
       case 'b':
        {
         decimal = decimal + 11;
         break;
        }
       case 'c':
        {
         decimal = decimal + 12;
         break;
        }
       case 'd':
        {
         decimal = decimal + 13;
         break;
        }
       case 'e':
        {
         decimal = decimal + 14;
         break;
        }
       case 'f':
        {
         decimal = decimal + 15;
         break;
        }
       default:
        {
         break;
        }
      }
     }
     return decimal;
    }
    
    展开全文
  • 主要介绍了C语言实现进制转换函数的实例详解的相关资料,这里提供实现实例帮助大家实现改功能,需要的朋友可以参考下
  • c语言进制转换

    2013-05-26 15:36:03
    含有多种进制转换函数,2to16,16to2, 2to10, 10to2
  • C语言进制转换 十进制转换为任意进制

    千次阅读 多人点赞 2019-04-13 11:46:20
    C语言小白,上机题“将十进制整数转换为任意n进制整数(n<=16)并输出(用递归函数实现,16进制用大写A B C等代替)”的一种解法,欢迎讨论! #include<stdio.h> #include<string.h> int n,r,count; ...

    C语言小白,上机题“将十进制整数转换为任意n进制整数(n<=16)并输出(用递归函数实现,16进制用大写A B C等代替)”的一种解法,欢迎讨论!

    #include<stdio.h>
    #include<string.h>
    int n,r,count;
    void print( int x )
    {
         if( x <= 9 )
             printf( "%d",x );
         else
             printf( "%c",x - 10 + 'A' );
     }
    void change( int n,int r )
    {
         if( n )
         {
             change( n / r, r );
             print( n % r );
         }
     }
    int main( )
    {
        scanf( "%d%d",&n,&r ) ;
        change( n,r );
        return 0;
    }
    
    展开全文
  • C语言 进制转换

    2018-12-04 22:36:29
    因为我代码中二进制和十六进制可以通过十进制间接转换,所以实际上只要写 十进制 &amp;lt;-&amp;gt;二进制进制&amp;lt;-&amp;gt;十六进制进制 而十进制&amp;lt;-&amp;gt;十六...

    整个代码互转只有3个函数

    • ToHexNum

    • ToDecNum

    • ToBiNum
      因为我代码中二进制和十六进制可以通过十进制间接转换,所以实际上只要写

    • 十进制 <->二进制

    • 十进制<->十六进制进制
      而十进制<->十六进制,是由上面两个转换组合而来,即二进制<->十进制<->十六进制

    //如果你愿意的话,也可以用十进制<->二进制<->十六进制的顺序来编写

    先贴一下截图
    输入的时候,除了二进制外后缀都需要加上对应格式缩写
    十进制输入格式: xxxxd或者xxxxD
    十六进制格式: xxxxh或者xxxxH
    二进制格式: xxxxx (没有后缀)
    在这里插入图片描述

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    
    //the type of number
    #define HEX 1
    #define DEC 2
    #define BIN 3
    #define DEBUG 0
    typedef struct{
        void *base;
        void *top;
        int len;
    }stack;
    int num_dec=0;
    
    int ToHexNum(char *num,const int type,const int len)
    {
        if(type==2)//DEC to hex
        {
            stack *s=(stack *)malloc(sizeof(stack)); s->len=0;
            char *base_p=(char *)s->base;
            char *top_p=(char *)s->top;
    
            base_p=(char *)malloc(len*sizeof(char));
            top_p=base_p;  
            if(num_dec==0)
            {
                int i=0;
                int power=1;
                while(i<len)//char number to int number;
                {
                    num_dec+=power*(num[len-i-1]-48);
                    power*=10;
                    i++;
                }
            }
            while(num_dec!=0)
            {
                switch(num_dec%16)
                {
                    case 10:*top_p++='A';break;
                    case 11:*top_p++='B';break;
                    case 12:*top_p++='C';break;
                    case 13:*top_p++='D';break;
                    case 14:*top_p++='E';break;
                    case 15:*top_p++='F';break;
                    default:*top_p++=num_dec%16+'0';break;
                }
                num_dec/=16;
                s->len++;
            }
            printf("\tHex:[");
            --top_p;
            while(s->len>0)
            {
                printf("%c",*top_p--);
                s->len--;
            }
            printf("]\n");
            free(base_p);
            free(s);
    
    
        }
        if(type==3)//Bin to hex
        {
            num_dec=ToDecNum(num,type,len);
            ToHexNum(num,DEC,len);
        }
        return 1;
    }
    int ToDecNum(char *num,const int type,const int len)//done
    {
        int power=len;
        int result=0;
    
        #if DEBUG
        puts("\nTesting contents:");
        puts(num);
        printf("type=%d,len=%d",type,len);
        #endif
    
        if(type==1)//hex
        {
            power-=2;
            while(power>=0)
            {
                if(num[len-power-2]<=57)
                {
                    #if DEBUG
                    printf("\nnum[i]=%c,=%d,pow=%f,power=%d\n",num[len-power-2],num[len-power-2]-48,pow(16,power),power);
                    #endif
    
                    result+=(num[len-power-2]-48)*pow(16,power);
                }
                else if(num[len-power-2]<=90)
                {
                    #if DEBUG
                    printf("\nnum[i]=%c,=%d,pow=%f,power=%d\n",num[len-power-2],num[len-power-2]-55,pow(16,power),power);
                    #endif
    
                    result+=(num[len-power-2]-55)*pow(16,power);
                }
                else
                {
                    #if DEBUG
                    printf("\nnum[i]=%c,=%d,pow=%f,power=%d\n",num[len-power-2],num[len-power-2]-87,pow(16,power),power);
                    #endif
    
                    result+=(num[len-power-2]-87)*pow(16,power);
                }
                --power;
            }
        }
    
        if(type==3)//binary
        {
            power-=1;
            while(power>=0)
            {
                #if DEBUG
                printf("\nnum[i]=%c,=%d,pow=%f,power=%d\n",num[len-power-1],num[len-power-1]-47,pow(2,power),power);
                #endif
    
                result+=(num[len-power-1]-48)*pow(2,power);
                --power;
            }
        }
        printf("\tDec:[%d]\n",result);
        return result;
    }
    
    int ToBiNum(char *num,const int type,const int len)//working
    {
       
        if(type==1)//hex to bin
        {
            num_dec=ToDecNum(num,type,len);
            //printf("num_dec:%d\n",num_dec);
            ToBiNum(num,DEC,len);
        }
        if(type==2)//dec to bin
        {
            stack *s=(stack *)malloc(sizeof(stack)); s->len=0;
            int *base_p=(int *)s->base;
            int *top_p=(int *)s->top;
    
            base_p=(int *)malloc(4*len*sizeof(int));
            top_p=base_p;
    
            if(num_dec==0)
            {
                int i=0;
                int power=1;
                while(i<len)//char to int;
                {
                    if(num[len-i-1]<'0'||num[len-i-1]>'9')
                        continue;
    
                    num_dec+=power*(num[len-i-1]-48);
                    power*=10;
                    i++;
                }
            }
            while(num_dec!=0)
            {
                *top_p++=num_dec%2;
                num_dec/=2;
                s->len++;
            }
            printf("\tBin:[");
            --top_p;
            while(s->len>0)
            {
                printf("%d",*top_p--);
                s->len--;
            }
            printf("]\n");
            free(base_p);
            free(s);
        }
    
    
    
        return 1;
    }
    
    int NumConversion()
    {
        int len=1;
        char *num;
        while(len!=0)
        {
            num=(char *)malloc(20*sizeof(char));
            puts("[**Input]:");
            scanf("%s",num);
            len=strlen(num);
            if(num[len-1]=='D'||num[len-1]=='d')
            {//decimal input
                ToBiNum(num,DEC,len-1);
                ToHexNum(num,DEC,len-1);
            }
            else if(num[len-1]=='H'||num[len-1]=='h')
            {//hex input
                ToBiNum(num,HEX,len);
            }
            else
            {//binary input
                ToHexNum(num,BIN,len);
            }
            free(num);
            num=NULL;
        }
        if(num!=NULL)
        {
            free(num);
        }
    
        return 1;
    }
    int main()
    {
        NumConversion();
        return 1;
    }
    
    
    展开全文
  • c++/C语言进制转换

    2010-08-04 09:55:56
    主要介绍C++/C语言进制转换的相关函数,以及一些对字符串处理的函数,并给出了一些实例
  • c语言实现进制转换函数

    千次阅读 2020-04-16 11:26:23
    编写一个函数,输入一个的整型数字,可以选择按照8/10/16进制输出字符串。采用递归形式实现 #include<stdio.h> void number_print(int i_num, int type) // type为8、10、16 { int divisor; // 除数 int...
  • 进制转换: 十进制转二进制:求余法:对2求余,直到为0为止,过程中出现的余数就是二进制(逆序取值) 二进制转十进制:2^(n-1) 二进制转八进制:低位开始,每三个二进制位对应一个八进制 二进制转十六进制:低位...
  • 将十进制数转为R进制数 void change(int r, int n) { int a[1005], x = 0; while (n) { a[x] = n % r; n /= r; x++; } for (int i = x - 1; i >= 0; i--)cout << a[i]; return; } 将R进制数...
  • 0873-十进制转换为K进制函数 时间限制: 1000 毫秒 内存限制: 32768 K字节 判题规则: 严格比较 问题描述 将十进制数转换为K1) 输入 测试数据有多组第一行为测试数据的组数 然后每行一个整型数 输出 每行一个数 输入样...
  • C语言各种进制转换函数调用

    千次阅读 2015-11-23 18:09:06
    #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; //实现功能10-&gt;2,10-&gt;8,10-&gt;16,16-&gt;10,16-&...//C语言中%d直接输入十进制数,%o输入八进制数,...
  • c语言进制转换成二进制 递归实现

    千次阅读 多人点赞 2019-01-05 17:09:13
    c语言进制转换成二进制 递归实现,函数代码很短,但是很难懂! int fun(int n) //十进制转换成二进制递归函数 { if(n) //递归停止的条件 { fun(n/2); //递归 printf("%d",n&amp;1); } } ...
  • 以下代码中提供两个函数,用于将十进制转换和其他进制和其他进制转换为十进制 //Info: // 提供2、8、10、16进制之间相互转换的两个函数(正整数) // 更新日期:2020.2.23 #include <stdio.h> #include <...
  • 我用c语言写的,不是很好的。写的也不是很规范,希望得到高人的指导,用的调用函数,很基本的知识写的。第一次上传呢@~
  • //编写一个程序,通过命令行参数读取两个二进制字符串,对这两个二进制数使用~运算符,&运算符,|运算符 //和^运算符,并以二进制字符串形式打印结果(如果无法使用命令行环境 , 可以通过交互式让程序读取字符串) # ...
  • C语言进制转换

    2019-04-29 10:50:31
    /*语言中进制表示: 二进制表示:在二进制数字前面加上0b;...将其他进制转换成八进制:在printf函数中以%o占位; 将其他进制转换成十六进制:在printf函数中以%x占位; 在C语言中,没有占位符可将其他进制转...
  • 字符串转十六进制 代码实现: 02 十六进制转字符串 代码实现: 或者: 效果:十六进制"0x13 0xAA 0x02",转为字符串"13AAA2"。 03 字符串转十进制 (1)若带负号,代码实现: 效果:字符串"-...
  • itoa进制转换函数

    2018-04-10 10:38:21
    itoa是广泛应用的非标准C语言和C++语言扩展函数。由于它不是标准C/C++语言函数,所以不...功能:将任意类型的数字转换n进制的字符串。在&lt;stdlib.h&gt;中与之有相反功能的函数是atoi。1char*itoa(int val...
  • c语言进制转换二进制 递归

    千次阅读 2020-03-17 17:07:16
    本题要求实现一个函数,将正整数n转换为二进制后输出。 函数接口定义: void dectobin( int n ); 函数dectobin应在一行中打印出二进制的n。建议用递归实现。 裁判测试程序样例: #include <stdio.h> void ...
  • C语言——十进制转为二进制、八进制、十六进制函数转换 /*** * Copyright(C) 2011, SKYCNC * All rights reserved * * 程序名称:dec_to_bin_oct_hex * 功 能:输入一个十进制数,将其转化为二进制、...
  • } void to_binary(unsigned int n,unsigned int m) //运用递归函数完成进制转换 { int r; r=n%m; if(n>=m) to_binary(n/m,m); printf("%d",r); } 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 ...
  • 01字符串转十六进制代码实现:02十六进制转字符串代码实现:或者:效果:十六进制"0x13 0xAA 0x02",转为字符串"13AAA2"。03字符串转十进制(1)若带负号,代码实现:效果:字符串"-123"转为"-123"。(2)若不带负号...
  • c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱
  • 有3种方式实现,其中两种是使用系统函数,另一种是直接自己编写。 使用系统函数实现要加入#include <stdlib.h>,自己编写则不需要这个头文件。 下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的...
  • C语言-进制转换

    2020-03-01 14:56:31
    //将一个正整数转换成其他基数的函数 #include <stdio.h> int convertedNumber [64]; long int numberToConvert; int base; int digit = 0; void getNumberAndBase (void) { printf ("请输入你需要转换的数字...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 884
精华内容 353
关键字:

c语言进制转换函数

c语言 订阅