当前位置: 代码迷 >> C语言 >> 求!16进制0x0102转换成2进制数得函数
  详细解决方案

求!16进制0x0102转换成2进制数得函数

热度:158   发布时间:2006-12-26 10:14:05.0
求!16进制0x0102转换成2进制数得函数
求一16进制数0x0102转换成2进制数得函数
哪位帮忙编一下
搜索更多相关的解决方案: 进制  函数  

----------------解决方案--------------------------------------------------------
先转换成10进制,在转换成2进制
----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
帮写一下 不会啊
----------------解决方案--------------------------------------------------------
以下是引用zhangjuan在2006-12-26 10:23:00的发言:
先转换成10进制,在转换成2进制

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


----------------解决方案--------------------------------------------------------

没有细想,直接用了一个比较笨的方法,另外我不知道前面的零要不要去掉,前两位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;
}


----------------解决方案--------------------------------------------------------

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;
}
}


----------------解决方案--------------------------------------------------------
辛苦大家了

----------------解决方案--------------------------------------------------------
  相关解决方案