考虑到举一反三,这里顺便上完整代码,顺便可以考虑实现R进制和十进制的转换.

完整代码:

 #include <stdio.h>
#include <math.h> double
hexToDecimal(int); double
octToDecimal(int); double
toDecimal(int, int, int); int
main(void) {
int a = 0x3c;
double r = hexToDecimal(a);
printf("%.f\n", r);
a = ;
r = octToDecimal(a);
printf("%.f\n", r);
} double
hexToDecimal(int hex) {
return toDecimal(hex, , );
}
double
octToDecimal(int oct){
return toDecimal(oct, , );
} double
toDecimal(int num, int base, int offset) {
int i = ; //(b)的i次幂.
double r=; //十进制结果.
double b= base + ; //底数为b.
while(num) {
double t = (int)(num & base);
r += t * pow(b, i++);
num>>=offset;
} return r;
}

该算法还是蛮简单,易懂的.例如十六进制的 3C,依次从右往左取数,通过&(与)15(4位1)可以得到C的二进制值的大小,为12.接下来就不用说了.很简单了.

另外,对于"输入"16进制,的情况:

 /*
input:16进制.
output:10进制.
*/
int hexToDecimal(char * hex) {
int len = strlen(hex); //主要进行次方运算.
double b = ; //底数.
int result = ; //存储结果.
char *p = hex; while(*p) {
if(*p >= '' && *p <= '')
result += (int)pow(b, --len) * (*p - '');
else if(*p >= 'a' && *p <= 'f')
result += (int)pow(b, --len) * (*p - 'a' + );
else if(*p >= 'A' && *p <= 'F')
result += (int)pow(b, --len) * (*p - 'A' + ); p++;
} //while. return result;
}

c - 十六进制 转 十进制的更多相关文章

  1. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 十六进制转十进制函数_C编程

    /**************************十六进制转十进制函数**************************//*函数原型:uint htd(uint a)/*函数功能:十六进制转十 ...

  3. UTC格式转换 & 十六进制换算为十进制

    UTC格式转换成北京时间格式: /// <summary> /// UTC格式与datatime的转换 /// </summary> /// <param name=&q ...

  4. BCD码、十六进制与十进制互转

    在做嵌入式软件的设计中,常常会遇到十六进制.BCD码与十进制之间的转换,近期做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.通过对BCD码.十六进制 权的理解,轻松的实现了他们之间 ...

  5. C语言的本质(2)——二进制、八进制、十六进制与十进制

    二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二",由18世纪德国数理哲 ...

  6. C# 进制转换(二进制、十六进制、十进制互转)

    原文地址:https://www.cnblogs.com/icebutterfly/p/8884023.html C# 进制转换(二进制.十六进制.十进制互转)由于二进制数在C#中无法直接表示,所以所 ...

  7. 八进制、十六进制与十进制的转换,bytes的十六进制

    二进制.八进制.十六进制与十进制的不同顾名思义在于进位不同: 十进制遇十进一,9+1=10,19+1=20,199+1=200.相同数字前一位是后一位的十倍,例如11,前一个代表10,后一个是1. 一 ...

  8. lqb 基础练习 十六进制转十进制

    基础练习 十六进制转十进制 时间限制:1.0s   内存限制:512.0MB     问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~ ...

  9. JAVA 十六进制和十进制、二进制转换

    java十六进制和十进制.二进制转换 十进制转化成十六进制 Integer x = 100; hex = x.toHexString(x); 十六进制转化成十进制 Integer.parseInt(h ...

  10. python实现进制转换(二、八、十六进制;十进制)

    python实现进制转换(二.八.十六进制:十进制) (一)十进制整数转为二.八.十六进制 1.format实现转换>>> format(2,"b") # (10 ...

随机推荐

  1. PHP导出MySQL数据到Excel文件

    PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...

  2. Django filter中用contains 在mysql中的问题

    用PYTHON ,DJANGO 做站,在通常的情况下,需要用到 orM 的查询方法,比如object.filter(tag__contains='keywords').... 在这种情况下,如果你跟踪 ...

  3. A记录、CNAME记录、MX记录

    A 记录(Address)  (一句话:用来指定域名和服务器IP的对应关系) 是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server上.同时也可以 ...

  4. Quartz2D使用

    使用Quartz2D前  先导入QuartzCore.framework //划线 //1.获取图形上下文 CGContextRef ctx=UIGraphicsGetCurrentContext() ...

  5. ExtJS 4 MVC架构讲解

    大规模客户端应用通常不好实现不好组织也不好维护,因为功能和人力的不断增加,这些应用的规模很快就会超出掌控能力,ExtJS 4 带来了一个新的应用架构,不但可以组织代码,还可以减少实现的内容新的应用架构 ...

  6. 浅谈Java内存泄露

    一.引言 先等等吧……累了

  7. MVC4 教程

    http://blog.csdn.net/huangjihua0402/article/details/8507055 http://www.cnblogs.com/lc-chenlong/p/324 ...

  8. BZOJ1708: [Usaco2007 Oct]Money奶牛的硬币

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 513  Solved: 329[Submi ...

  9. Effective C++ 第二版 40)分层 41)继承和模板 42)私有继承

    条款40 通过分层来体现"有一个"或"用...来实现" 使某个类的对象成为另一个类的数据成员, 实现将一个类构筑在另一个类之上, 这个过程称为 分层Layeri ...

  10. java GBK字符转换成为UTF-8编码字符

    import java.util.HashMap; import java.util.Map; /** * 创建日期: 2014-04-18 10:36:25 * 作者: 黄飞 * mail:huan ...