当前位置:C++技术网 > 资讯 > 各种进制相互转换的C语言源代码

各种进制相互转换的C语言源代码

更新时间:2015-06-23 12:05:26浏览次数:1+次

因为逻辑上很简单,只是部分的转换用了函数而已。要了解,查一下MSDN即可。这里就给你所有的源代码,看就明白了。
//////////////////////////////////////代码段//////////////////////////////////////////////
#include "stdio.h"
#include <stdlib.h>
#include <malloc.h>
void des(void);
void sel(void);
void tentosixteen(void);
void tentoeight(void);
void tentotwo(void);
void sixteentoten(void);
void eighttoten(void);
void sixteentotwo(void);
void eighttotwo(void);
void twotoeight(void);
void twotosixteen(void);
void twototen(void);
void eighttosixteen(void);
void sixteentoeight(void);

void main()
{
    des();
    sel();
    system("pause");
}
void des(void)

    printf("******************************--进制转换器--***********************************\n\n");
    printf("************************************************-制作人:王定雄-***************\n");
    printf("** ---使用说明--- **\n");
    printf("** 1.选择转换模式号,按回车键确定。 **\n");
    printf("** 2.输入待转换的数字,按回车键确定。 **\n");
    printf("** 3.得到转换结果 **\n");
    printf("************************************************-制作人:王定雄-***************\n");
    printf("**模式选项: 1-十→十六 2-十→八 3-十→二 **\n");
    printf("** 4-十六→十 5-十六→八 6-十六→二 **\n");
    printf("** 7-八→十六 8-八→十 9-八→二 **\n");
    printf("** 10-二→十六 11-二→十 12-二→八 0-退出 **\n");
    printf("************************************************-制作人:王定雄-***************\n");
    printf("请输入模式选项号:");
}
void sel(void)
{ int num;
while((scanf("%d",&num))==1)
{
    switch(num)
    {
case 0:goto out;
case 1:tentosixteen();break;
case 2:tentoeight();break;
case 3:tentotwo();break;
case 4:sixteentoten();break;
case 5:sixteentoeight();break;
case 6:sixteentotwo();break;
case 7:eighttosixteen();break;
case 8:eighttoten();break;
case 9:eighttotwo();break;
case 10:twotosixteen();break;
case 11:twototen();break;
case 12:twotoeight();break;
    default:printf("无此选项。\n");break;
    }
    while(getchar()!='\n')
        continue;
    printf("\n请再次选择模式!\n");
}
out:printf("\n***您已选择退出。***\n***************感谢你的使用!***************\n");
}
void tentosixteen(void)
{
    int i;
    printf("--------------------进入【十→十六】模式--------------------\n\n");
    printf("十进制数:");
    scanf("%d",&i);
    printf("→十六进制数:%X\n",i);
    printf("\n--------------------退出【十→十六】模式--------------------\n");
}
void tentoeight(void)
{
    int i;
    printf("--------------------进入【十→八】模式--------------------\n\n");
    printf("十进制数:");
    scanf("%d",&i);
    printf("→八进制数:%o\n",i);
    printf("\n--------------------退出【十→八】模式--------------------\n");
}
void tentotwo(void)
{
    int i;
    char s[128];
    printf("--------------------进入【十→二】模式--------------------\n\n");
    printf("十进制数:");
    scanf("%d",&i);
    itoa(i, s, 2);
    printf("→二进制数:%s\n",s); 
    printf("\n--------------------退出【十→二】模式--------------------\n");
}
void sixteentoten(void)
{
    int i;
    printf("--------------------进入【十六→十】模式--------------------\n\n");
    printf("十六进制数:");
    scanf("%X",&i);
    printf("→十进制数:%d\n",i);
    printf("\n--------------------退出【十六→十】模式--------------------\n");
}
void eighttoten(void)
{
    int i;
    printf("--------------------进入【八→十】模式--------------------\n\n");
    printf("八进制数:");
    scanf("%o",&i);
    printf("→十进制数:%d\n",i);
    printf("\n--------------------退出【八→十】模式--------------------\n");
}

void sixteentotwo(void)
{
    int i;
    char s[128];
    printf("--------------------进入【十六→二】模式--------------------\n\n");
    printf("十六进制数:");
    scanf("%x",&i);
    itoa(i, s, 2); 
    printf("→二进制数:%s\n",s);
    printf("\n--------------------退出【十六→二】模式--------------------\n");
}
void eighttotwo(void)
{
    int i;
    char s[128];
    printf("--------------------进入【八→二】模式--------------------\n\n");
    printf("八进制数:");
    scanf("%o",&i);
    itoa(i, s, 2); 
    printf("→二进制数:%s\n",s);
    printf("\n--------------------退出【八→二】模式--------------------\n");
}
void twototen(void)
{
    char *p;
    char* endp=0;
    char * pArr;
    int i,len;
    printf("--------------------进入【二→十】模式--------------------\n\n");
    printf("请输入二进制位数:");
    scanf("%d",&len);
    pArr=(char*)malloc(len*sizeof(char));
    for(i=0;i<len;i++);
    scanf("%s",pArr);
    p=pArr;

    printf("%d\n",strtol( p , &endp , 2 ) );
    printf("\n--------------------退出【二→十】模式--------------------\n");
}
void twotosixteen(void)
{
    char *p;
    char* endp=0;
    char * pArr;
    int i,len;
    printf("--------------------进入【二→十六】模式--------------------\n\n");
    printf("请输入二进制位数:");
    scanf("%d",&len);
    pArr=(char*)malloc(len*sizeof(char));
    for(i=0;i<len;i++);
    scanf("%s",pArr);
    p=pArr;

    printf("%x\n",strtol( p , &endp , 2 ) );
    printf("\n--------------------退出【二→十六】模式--------------------\n");
}
void twotoeight(void)
{
    char *p;
    char* endp=0;
    char * pArr;
    int i,len;
    printf("--------------------进入【二→八】模式--------------------\n\n");
    printf("请输入二进制位数:");
    scanf("%d",&len);
    pArr=(char*)malloc(len*sizeof(char));
    for(i=0;i<len;i++);
    scanf("%s",pArr);
    p=pArr;

    printf("%o\n",strtol( p , &endp , 2 ) );
    printf("\n--------------------退出【二→八】模式--------------------\n");
}
void eighttosixteen(void)
{
    int i;
    printf("--------------------进入【八→十六】模式--------------------\n\n");
    printf("八进制数:");
    scanf("%o",&i);
    printf("→十六进制数:%X\n",i);
    printf("\n--------------------退出【八→十六】模式--------------------\n");
}
void sixteentoeight(void)
{
    int i;
    printf("--------------------进入【十六→八】模式--------------------\n\n");
    printf("十六进制数:");
    scanf("%x",&i);
    printf("→八进制数:%o\n",i);
    printf("\n--------------------退出【十六→八】模式--------------------\n");
}
//////////////////////////////////////代码段//////////////////////////////////////////////
因为简单,就不做解释了。二进制相关的转换相对不容易看懂,就是使用那个函数即可。不清楚可以查询MSDN,有很详细的说明。