| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3264 人关注过本帖
标题:求!16进制0x0102转换成2进制数得函数
只看楼主 加入收藏
wanghaoqoo
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-12-4
收藏
 问题点数:0 回复次数:7 
求!16进制0x0102转换成2进制数得函数
求一16进制数0x0102转换成2进制数得函数
哪位帮忙编一下
搜索更多相关主题的帖子: 进制 函数 
2006-12-26 10:14
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
先转换成10进制,在转换成2进制

2006-12-26 10:23
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 

依次除2把余数反序排下来就是2进制了


2006-12-26 10:46
wanghaoqoo
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-12-4
收藏
得分:0 
帮写一下 不会啊
2006-12-26 11:36
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用zhangjuan在2006-12-26 10:23:00的发言:
先转换成10进制,在转换成2进制

直接转换,一个十六进制位对应4个2进制位.


倚天照海花无数,流水高山心自知。
2006-12-26 14:11
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

没有细想,直接用了一个比较笨的方法,另外我不知道前面的零要不要去掉,前两位0x是代表是十六进制数吧,我记得好像是。
#include <stdio.h>
#define N 1000

int is_change(char ch);

int main(void)
{
char str[N];
int i;

while(gets(str) != NULL)
{
for(i = 2;str[i] != '\0';i ++)
{
is_change(str[i]);
}
}

return 0;
}

int is_change(char ch)
{
switch(ch)
{
case '1':
printf("0001");
break;
case '2':
printf("0010");
break;
case '3':
printf("0011");
break;
case '4':
printf("0100");
break;
case '5':
printf("0101");
break;
case '6':
printf("0110");
break;
case '7':
printf("0111");
break;
case '8':
printf("1000");
break;
case '9':
printf("1001");
break;
case 'a':
case 'A':
printf("1010");
break;
case 'b':
case 'B':
printf("1011");
break;
case 'c':
case 'C':
printf("1100");
break;
case 'd':
case 'D':
printf("1101");
break;
case 'e':
case 'E':
printf("1110");
break;
case 'f':
case 'F':
printf("1111");
break;
}

return 0;
}


该学习了。。。
2006-12-26 14:43
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

int is_change(char ch)
{
switch(ch)
{
case '1':
printf("0001");
break;
case '2':
printf("0010");
break;
case '3':
printf("0011");
break;
case '4':
printf("0100");
break;
case '5':
printf("0101");
break;
case '6':
printf("0110");
break;
case '7':
printf("0111");
break;
case '8':
printf("1000");
break;
case '9':
printf("1001");
break;
case 'a':
case 'A':
printf("1010");
break;
case 'b':
case 'B':
printf("1011");
break;
case 'c':
case 'C':
printf("1100");
break;
case 'd':
case 'D':
printf("1101");
break;
case 'e':
case 'E':
printf("1110");
break;
case 'f':
case 'F':
printf("1111");
break;
}

return 0;
}


for(i=strlen(str)-1;i>=0;i--)
{
if(str[i]>='a')
{
sum=str[i]-'a'+10;
}
else
{
if(str[i]>='A')
sum=str[i]-'A'+10;
else
sum=str[i]-'0';
}
while(sum)
{
a[k++]=sum%2;
sum/=2;
}
}


倚天照海花无数,流水高山心自知。
2006-12-26 15:13
wanghaoqoo
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-12-4
收藏
得分:0 
辛苦大家了
2006-12-26 16:04
快速回复:求!16进制0x0102转换成2进制数得函数
数据加载中...
 
   



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

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