
这个函数的int HtoD(char a);就是将16进制的数用字符数组保存,把数组首地址作为参数传递给函数,函数返回转换后的10进制整型数值。
详细说明,我写在备注里了,你看以参考。
#include <stdioh>#include <stringh>
int HtoD(char a)//将16进制的数字用字符串保存,并将字符串首地址作为参数传递
{
int num=0,i;
for(i=0; i<strlen(a); i++)//迭代 迭代次数为a数组的长度 形参a是指针,初值是指向字符数组的首地址,也就是指向16进制数字的左边第1位
{
//每次迭代 取指针指向的地址值进行判断,同时指针不断往右移动
if((a+i)>='0'&&(a+i)<='9')//如果当前位是0~9的数字,那么总数值num累加同时前值16(因为左边是高位,从高位往低位数,每多1位高位就16)
num = num16 + (a+i)-'0';
else if((a+i)>='A'&&(a+i)<='Z')//如果当前位是大写字母A~Z,转换成10进制数值,再累加
num = num16 + (a+i)-'A'+10;
else if((a+i)>='a'&&(a+i)<='z')//如果当前位是小写字母a~z,转换成10进制数值,再累加
num = num16 + (a+i)-'a'+10;
else
return -1;//表示输入错误的数
}
return num;
}
int main()
{
char a[]="1F";
printf("1F=%d",HtoD(a)); //这里我写了简单的调用,打印结果:1F=31
return 0;
}
将十六进制数转换为十进制,可以使用下面的公式:
十进制数 = (16^0 第0位数) + (16^1 第1位数) + (16^2 第2位数) + + (16^n 第n位数)
其中,第i位数表示十六进制数的第i位,16^i表示16的i次方。
例如,将十六进制数3A7转换为十进制,可以使用下面的公式:
十进制数 = (16^0 7) + (16^1 A) + (16^2 3)
由于A代表十进制数10,所以上面的公式可以简化为:
十进制数 = 7 + 10 16 + 3 256
用计算器计算一下,结果为935。因此,十六进制数3A7对应的十进制数是935。
希望这对你有帮助!
十六进制转换成十进制的具体算法是:
1、首先明白16进制数(从右到左数是第0位,第1位,第2位……)的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次这样排列下去。
2、明白ABCDEF表示的二进制数字分别是10,11,12,13,14,15。
3、十六进制转换成十进制的公式是:要从右到左用二进制的每个数去乘以16的相应次方,然后这些数字相加就是了。
例1:2AF5换算成10进制:
第0位: 5 16^0 = 5
第1位: F 16^1 =1516^1= 240
第2位: A 16^2= 10 16^2=2560
第3位: 2 16^3 = 8192
结果就是:5 16^0 + 15 16^1 + 10 16^2 + 2 16^3 = 10997
例2:CE换算成10进制:
第0位:E16^0=1416^0=14
第1位:C16^1=1216^1=192
结果就是:1416^0+1216^1=206
16进制即逢16进1,每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个大小不同的数。16进制转换即16进制与其他不同进制之间的换算转换。
十六进制转换成十进制在电脑的“计算机-程序员”里面就可以进行相应的设置。
具体 *** 作方法如下:
1、开始菜单里面找到“计算器”;
2、在计算器的“查看”找到“程序员”,点击进入;
3、点击十进制数既可以了。
以上就是关于c语言16进制与10进制的转换全部的内容,包括:c语言16进制与10进制的转换、十六进制怎么转换为十进制、16进制数如何转换成10进制数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)