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