一、常用进制之间的转换
1.十进制转二进制
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,x,a[1000];
scanf("%d",&x);
for(i=0;;i++)
{
a[i]=x%2;
x=x/2;
if(x==0)
break;
}
for(j=i;j>=0;j--)
printf("%d",a[j]);
getchar();
getchar();
return 0;
}
2.二进制转十进制
#include <stdio.h>
#include <stdlib.h>
int main()
{
long int bin;//定义一个长整型变量
int ln=1,dec=0 ;
scanf("%ld",&bin);
while (bin)
{
dec+=bin%10*ln;
ln*=2;
bin/=10;
}
printf("%d",dec);
getchar();
getchar();
}
3.十进制转十六进制
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[10] = {0};
int x,y,i,j,z;
printf("请输入一个10进制数:");
scanf("%d",&x);
z = x;
for(i = 0; x;i++){
y = x%16;
if(y>9)
a[i] = y - 10+'A';
else
a[i] = y+'0';
x=x/16;
}
printf("%d的十六进制表示:0x",z);
for(j = i-1; j>=0; j--)
printf("%c",a[j]);
printf("\n");
getchar();
getchar();
}
4.十六进制转十进制
函数转换
int a = strtol(十六进制字符串,NULL,16); //a 为十六进制转换的十进制结果。
算法转换
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,i,t,sum;
sum = 0;
char s[50];
printf("请输入十六进制数:");
scanf("%s",s);
for(i = 0;s[i];i++){
if(s[i]<='9')
t = s[i] -'0';
else if(s[i]>'9'&&s[i] <'g'){
t = s[i] -'a'+10;
if(s[i]>'9'&&s[i] < 'G'){
t = s[i] - 'A'+10;
}
}
sum = sum*16 + t;
}
printf("%s的十进制数是:%d\n",s,sum);
getchar();
getchar();
}
5.十六进制转二进制
步骤:先将十六进制转换成十进制然后再将十进制转换成二进制
6.二进制转十六进制
步骤:先将二进制转换成十进制然后再将十进制转换成十六进制
解决问题的方法有多种多样,若有更简单的算法欢迎大神指教。