c语言:各种进制之间的相互转换

qwz_ss qwz_ss 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 32
int MD(int s,char *str)
{
int m=0;
while(*str){
if(*str>='a'&&*str<='f')
m=s*m+*str-'a'+10;
else if(*str>='A'&&*str<='F')
m=s*m+*str-'A'+10;
else
m=s*m+*str-'0';
str++;
}
return m;
}

void reverse(char *s)
{
int i,j;
char c;
for(i=0,j=strlen(s)-1;i<j;i++,j--){
c=s[i];
s[i]=s[j];
s[j]=c;
}

}
char * exch(int srcs,char *str,int s)
{
int m,i,num;
char *t=(char *)malloc(N);
i=0;
m=MD(srcs,str);

do{
if(m%s<10)
t[i++]=m%s+'0';
else
t[i++]=m%s-10+'A';
}while((m/=s)!=0);
if(s>=10){
t[i++]='X';
t[i]='0';
}
reverse(t);
return t;

}



int main(void)
{
int srcs,ds;
char s[N];
#if 1
printf("给出一个整数:\n");
scanf("%s",s);
printf("它的进制是:\n");
scanf("%d",&srcs);
printf("十进制结果是:\n");
printf("%d\n\n",MD(srcs,s));
#endif
printf("给出一个整数:\n");
scanf("%s",s);
printf("它的进制是:\n");
scanf("%d",&srcs);
printf("要转换成的进制是:\n");
scanf("%d",&ds);
printf("转换之后结果是:\n");
printf("%s\n",exch(srcs,s,ds));
return 0;
}
...全文
评论 9
收藏 已收藏
分享
返回顶部
qwz_ss
C语言 70,039 成员 243,237 内容