C语言 十进制转十六进制

想问一下这个程序中的自定义函数是怎么一个运行的过程,比如这里面令x=27.
10转16不是要把余数倒着排列么?这里是怎么实现的?
谢谢~

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
int what,input;
void toall(int tmp,int a,int b)
{
int p;
char str[]={"0123456789ABCDEF"};
char arr[32]={"\0"};
int i=31;
if(tmp==0)
return;
while(tmp!=0)
{
p=tmp&a;
arr[i--]=str[p];
tmp=tmp>>b;
}
printf("%d转换为%d进制为:",input,what);
for(int j=i+1;j<32;j++)
printf("%c",arr[j]);
}
int main()
{
while(1)
{
printf("十进制转二进制-------->2\n");
printf("十进制转八进制-------->8\n");
printf("十进制转十六制-------->16\n请选择:");
scanf("%d",&what);
if(what!=2&&what!=8&&what!=16)
printf("输入的数不合法!请重新输入!\n");
else break;
}
printf("输入需要转换的十进制数字:");
scanf("%d",&input);
switch(what)
{
case 2:toall(input,1,1);break;
case 8: toall(input,7,3);break;
case 16: toall(input,15,4);break;
}
getch();
}

我这刚写了个转各进制的代码,你可以看看

                -物联网校企联盟技术部

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-22
如果将一个数转化为一个字符串呢例如
17转化成十六进制的"11"这样可以满足你吧
char
*kk(int
p){
int
i=0;
char
*k=new
char[100];
do{
switch(p%16){
case
10:k[i]='A';
break;
case
11:k[i]='B';
break;
case
12:k[i]='C';
break;
case
13:k[i]='D';
break;
case
14:k[i]='E';
break;
case
15:k[i]='F';
break;
default:
k[i]=(p%16)+'0';
break;
}
i++;
p/=16;
}while(p!=0);
k[i]='\0';
for
(int
j=0;j
评论
0
0
加载更多
第2个回答  2020-11-19

C语言_012_十六进制转十进制

第3个回答  2013-05-05
简单一句话就是使用递归调用ShowHex()函数,你可以手写把每一次运行的r值写出来就看明白了
相似回答