#include
#include
#include
/*把数a从b进制转换成c进制*/
void transfer(char a[],int c)
{
char s[100];
int rv, n=0, base=1, i ,ii;
int b = 2;
int len = strlen(a);
i = len;
for(i = len - 1;i >= 0;i--)//a从b进制的转化为10进制的
{
ii = a[i]-'0';
n+=(ii%10)*base;
base*=b;
}
itoa(n, s, c);//函数调用n转化为C进制的,存在数组S中
sscanf(s, "%d ", &rv);
printf("将数%s转换成%10进制后是:%d\n",a,rv);
}
int main()
{
char x[10];
int c;
printf("输入你要转换进制的数和进制,用空格分开\n");
scanf("%s%d",x,&c);
transfer(x,c);
return 0;
}
下面是运行截图:
f是否表示转换使用函数实现?
代码将二进制序列转换为十六进制序列:
#include
void f(char *p2,char *p16) //将二进制数转换为十六进制数
{
int t=0;
for (int i=0;p2[i];i++)
t=t*2+p2[i]-'0';
i=0;
while (t!=0)
{
for(int j=i;j>0;j--)
p16[j]=p16[j-1];
p16[0]=t%16;
p16[0]+=p16[0]<10?'0':'A'-10;
t=t/16;
i++;
}
p16[i]='\0';
}
void main()
{
char a[80],b[80];
printf("输入二进制数:");
scanf("%s",a);
f(a,b);
printf("十六进制数:%s\n",b);
}