一、常用进制之间的转换
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*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; 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.二进制转十六进制
步骤:先将二进制转换成十进制然后再将十进制转换成十六进制
解决问题的方法有多种多样,若有更简单的算法欢迎大神指教。