| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6185 人关注过本帖
标题:16进制转10进制,2进制
只看楼主 加入收藏
菜鸟来的
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-5-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
16进制转10进制,2进制
输入一个16进制转换为10进制,2进制输出。
搜索更多相关主题的帖子: 在线 
2011-05-08 23:57
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
程序代码:
root@~ #cat zh.c
#include <stdio.h>

int main (void) {

        int n,i=0,a[16];
        scanf("%x",&n);
        printf("Hex %x 's decimal is %i\n",n,n); //十六进制转十进制用printf()格式化输出就可以了
//辗转相除取模
        do {
                a[i]=n%2;
                n/=2;
                i++;
        }while(n!=0);

//逆序打印数组,输出二进制
        printf("Hex %x 's binary is ");

        for(i--;i>=0;i--)
                printf("%i",a[i]);

        printf("\n");

        return 0;

}

root@~ #./zh
10
Hex 10 's decimal is 16
Hex 10 's binary is 10000
root@~ #./zh
1a
Hex 1a 's decimal is 26
Hex 1a 's binary is 11010
root@~ #./zh
ffff
Hex ffff 's decimal is 65535
Hex ffff 's binary is 1111111111111111
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-09 10:29
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:2 
2楼用的是什么操作系统啊?能否告诉我一下?

My life is brilliant
2011-05-09 11:04
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
回复 3楼 lz1091914999
Cygwin

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-09 12:07
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:2 
膜拜2楼!
2011-05-09 12:12
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
收藏
得分:2 
回复 2楼 ansic
偷懒了,十进制的算法没写

--------将学到的东西为我所用,这才是学习的目的 --------
2011-05-09 13:08
zhuchenxi
Rank: 1
等 级:新手上路
帖 子:61
专家分:6
注 册:2011-4-28
收藏
得分:2 
这是 输入一个二进制数,输出十六进制的 代码:
自己改下啊:
# include<stdio.h>
# include<string.h>
void main()
{
    int i,n;
    scanf("%d\n",&n);
    while(n--){
        char s1[10001]={' '},s2[10001]={' '},s3[10001]={' '};
        int c1=0,c2=0,c3=0,t=0;
        gets(s1);
        c1=strlen(s1);
        if(c1%4!=0){
            t=4-c1%4;
            for(i=0;i<c1;i++){
                s2[t+i]=s1[i];}
            for(i=0;i<t;i++){
                s2[i]='0';}
        }
        else{
            for(i=0;i<c1;i++){
                s2[i]=s1[i];}
        }
        c2=strlen(s2);
        for(i=0;i<c2;i+=4){
            if(s2[i]=='0'&&s2[i+1]=='0'&&s2[i+2]=='0'&&s2[i+3]=='0') s3[i/4]='0';
            if(s2[i]=='0'&&s2[i+1]=='0'&&s2[i+2]=='0'&&s2[i+3]=='1') s3[i/4]='1';
            if(s2[i]=='0'&&s2[i+1]=='0'&&s2[i+2]=='1'&&s2[i+3]=='0') s3[i/4]='2';
            if(s2[i]=='0'&&s2[i+1]=='0'&&s2[i+2]=='1'&&s2[i+3]=='1') s3[i/4]='3';
            if(s2[i]=='0'&&s2[i+1]=='1'&&s2[i+2]=='0'&&s2[i+3]=='0') s3[i/4]='4';
            if(s2[i]=='0'&&s2[i+1]=='1'&&s2[i+2]=='0'&&s2[i+3]=='1') s3[i/4]='5';
            if(s2[i]=='0'&&s2[i+1]=='1'&&s2[i+2]=='1'&&s2[i+3]=='0') s3[i/4]='6';
            if(s2[i]=='0'&&s2[i+1]=='1'&&s2[i+2]=='1'&&s2[i+3]=='1') s3[i/4]='7';
            if(s2[i]=='1'&&s2[i+1]=='0'&&s2[i+2]=='0'&&s2[i+3]=='0') s3[i/4]='8';
            if(s2[i]=='1'&&s2[i+1]=='0'&&s2[i+2]=='0'&&s2[i+3]=='1') s3[i/4]='9';
            if(s2[i]=='1'&&s2[i+1]=='0'&&s2[i+2]=='1'&&s2[i+3]=='0') s3[i/4]='A';
            if(s2[i]=='1'&&s2[i+1]=='0'&&s2[i+2]=='1'&&s2[i+3]=='1') s3[i/4]='B';
            if(s2[i]=='1'&&s2[i+1]=='1'&&s2[i+2]=='0'&&s2[i+3]=='0') s3[i/4]='C';
            if(s2[i]=='1'&&s2[i+1]=='1'&&s2[i+2]=='0'&&s2[i+3]=='1') s3[i/4]='D';
            if(s2[i]=='1'&&s2[i+1]=='1'&&s2[i+2]=='1'&&s2[i+3]=='0') s3[i/4]='E';
            if(s2[i]=='1'&&s2[i+1]=='1'&&s2[i+2]=='1'&&s2[i+3]=='1') s3[i/4]='F';}
        c3=strlen(s3);
        for(i=0;i<c3;i++){
            printf("%c",s3[i]);}
        printf("\n");
    }
}
2011-05-09 13:09
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以下是引用shinan77在2011-5-9 13:08:51的发言:

偷懒了,十进制的算法没写

进制转换算法都一样。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-09 15:53
张春平
Rank: 3Rank: 3
来 自:北城
等 级:论坛游侠
帖 子:48
专家分:124
注 册:2010-12-2
收藏
得分:2 
我这儿有一个进制转换的程序,你可以参考一下:
#include<stdio.h>
#include<math.h>
#include<string.h>
int count=0;
void *tentoBOH(int a,int n)
{
    int t,i=0,j,str[50],*p;
    char str1[50],*q,temp;
    while(a!=0)
    {
        t=a%n;
        if(n==16)
        {
            if(t<=9&&t>=0)str1[i++]=(char)('0'+t);
            if(t>9&&t<16)str1[i++]=(char)('A'-10+t);
        }
        else
            str[i++]=t;
        a=a/n;
        count++;
    }
    for(i=0,j=count-1;i<count/2;i++,j--)
    {
        t=str[i];
        str[i]=str[j];
        str[j]=t;
        temp=str1[i];
        str1[i]=str1[j];
        str1[j]=temp;
    }
    if(n==16)
        return q=str1;
    else
        return p=str;
}
int BOHtoTen(char str[],int n)
{
    int len,i,a=0;
    char t;
    len=(int)strlen(str);
    for(i=0;i<len/2;i++)
    {
        t=str[i];
        str[i]=str[len-1-i];
        str[len-1-i]=t;
    }
    i=0;
    while(str[i]!='\0')
    {
        if(str[i]>='0'&&str[i]<='9')
            a+=(str[i]-'0')*(int)pow(n,i);
        if(str[i]>='a'&&str[i]<='f')
            a+=(str[i]-'a'+10)*(int)pow(n,i);
        if(str[i]>='A'&&str[i]<='F')
            a+=(str[i]-'A'+10)*(int)pow(n,i);
        i++;
    }
    return a;
}
void main()
{
    int a,i,n,m,*p;
    char *q,str[20];
    printf("请输入一个十进制数a= ");
    scanf("%d",&a);
    printf("请输入一个进制数n= ");
    scanf("%d",&n);
    if(n==16)q=tentoBOH(a,n);
    else p=tentoBOH(a,n);
    printf("输出正整数%d的%d进制为:",a,n);
    if(n==16)
        for(i=0;i<count;i++)
            printf("%c",*(q+i));
    else
        for(i=0;i<count;i++)
            printf("%d",*(p+i));
    printf("\n请输入字符串str= ");
    scanf("%s",str);
    printf("\n请输入该字符串的进制m= ");
    scanf("%d",&m);
    printf("\n该%d进制数%s转换成十进制数为:%d\n",m,str,BOHtoTen(str,m));
}
2011-05-09 17:11
西__风
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2011-3-24
收藏
得分:2 
请问2楼:  十六进制的数不是含有“ABCDEF” 这些字母的吗, 定义int 型可否?
2011-05-09 20:59
快速回复:16进制转10进制,2进制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029358 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved