计算机内部按2进制存放数据,输入输出才涉及 10进制,16进制等等。
成都创新互联公司致力于网站设计、成都做网站,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择成都创新互联公司,就选择了安全、稳定、美观的网站建设服务!
所以,你按10进制输入,按16进制输出就达到你的目的了。
例如:
int x;
printf("input x\n");
scanf("%d",x); // %d 就是按10进制输入
printf("The hex is %x\n", x); // %x 就是按16进制输入
// c/c++ 有 itoa 函数,可以把整型转各种进制,存放于字符数组s里,
// 例如 2进制: itoa(x,s,2); 8进制: itoa(x,s,8); 16 进制: itoa(x,s,16);
C语言16进制转十进制具体函数如下:
#include
"stdio.h"
int
main()
{
int
num=0;
int
a[100];
int
i=0;
int
m=0;
int
yushu;
char
hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("请输入一个十进制整数:");
scanf("%d",num);
while(num0)
{
yushu=num%16;
a[i++]=yushu;
num=num/16;
}
printf("转化为十六进制的数为:0x");
for(i=i-1;i=0;i--)//倒序输出
{
m=a[i];
printf("%c",hex[m]);
}
printf("\n");
}
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
这个函数的int HtoD(char *a);就是将16进制的数用字符数组保存,把数组首地址作为参数传递给函数,函数返回转换后的10进制整型数值。
详细说明,我写在备注里了,你看以参考。
#include stdio.h
#include string.h
int HtoD(char *a)//将16进制的数字用字符串保存,并将字符串首地址作为参数传递
{
int num=0,i;
for(i=0; istrlen(a); i++)//迭代 迭代次数为a数组的长度 形参a是指针,初值是指向字符数组的首地址,也就是指向16进制数字的左边第1位
{
//每次迭代 取指针指向的地址值进行判断,同时指针不断往右移动
if(*(a+i)='0'*(a+i)='9')//如果当前位是0~9的数字,那么总数值num累加同时前值*16(因为左边是高位,从高位往低位数,每多1位高位就*16)
num = num*16 + *(a+i)-'0';
else if(*(a+i)='A'*(a+i)='Z')//如果当前位是大写字母A~Z,转换成10进制数值,再累加
num = num*16 + *(a+i)-'A'+10;
else if(*(a+i)='a'*(a+i)='z')//如果当前位是小写字母a~z,转换成10进制数值,再累加
num = num*16 + *(a+i)-'a'+10;
else
return -1;//表示输入错误的数
}
return num;
}
int main()
{
char a[]="1F";
printf("1F=%d",HtoD(a)); //这里我写了简单的调用,打印结果:1F=31
return 0;
}
方案一:
#includestdio.h#includemath.h#includestring.hint main(){char s[50];scanf("%s",s);int t=strlen(s);long sum=0;for(int i=0;it;i++){if(s[i]='A' s[i]='Z')s[i]=int(s[i]-'A')+10+'0';sum+=((s[i]-'0')*(pow(16,t-1-i)));}printf("%ld\n",sum);}
方案二:
#includestdio.hint main(){char s[50];scanf("%s",s);int t;long sum=0;for(int i=0;s[i];i++){if(s[i]='9')t=s[i]-'0';elset=s[i]-'A'+10;sum=sum*16+t;}printf("%ld\n",sum);return 0;}