c - 十六进制 转 十进制
考虑到举一反三,这里顺便上完整代码,顺便可以考虑实现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 - 十六进制 转 十进制的更多相关文章
- [No000071]C# 进制转换(二进制、十六进制、十进制互转)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 十六进制转十进制函数_C编程
/**************************十六进制转十进制函数**************************//*函数原型:uint htd(uint a)/*函数功能:十六进制转十 ...
- UTC格式转换 & 十六进制换算为十进制
UTC格式转换成北京时间格式: /// <summary> /// UTC格式与datatime的转换 /// </summary> /// <param name=&q ...
- BCD码、十六进制与十进制互转
在做嵌入式软件的设计中,常常会遇到十六进制.BCD码与十进制之间的转换,近期做M1卡的应用中,涉及了大量的十六进制.BCD码与十进制之间的转换.通过对BCD码.十六进制 权的理解,轻松的实现了他们之间 ...
- C语言的本质(2)——二进制、八进制、十六进制与十进制
二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二",由18世纪德国数理哲 ...
- C# 进制转换(二进制、十六进制、十进制互转)
原文地址:https://www.cnblogs.com/icebutterfly/p/8884023.html C# 进制转换(二进制.十六进制.十进制互转)由于二进制数在C#中无法直接表示,所以所 ...
- 八进制、十六进制与十进制的转换,bytes的十六进制
二进制.八进制.十六进制与十进制的不同顾名思义在于进位不同: 十进制遇十进一,9+1=10,19+1=20,199+1=200.相同数字前一位是后一位的十倍,例如11,前一个代表10,后一个是1. 一 ...
- lqb 基础练习 十六进制转十进制
基础练习 十六进制转十进制 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~ ...
- JAVA 十六进制和十进制、二进制转换
java十六进制和十进制.二进制转换 十进制转化成十六进制 Integer x = 100; hex = x.toHexString(x); 十六进制转化成十进制 Integer.parseInt(h ...
- python实现进制转换(二、八、十六进制;十进制)
python实现进制转换(二.八.十六进制:十进制) (一)十进制整数转为二.八.十六进制 1.format实现转换>>> format(2,"b") # (10 ...
随机推荐
- XmlHttp对象
我是这样理解XmlHttp对象的:xml是一种文档类型Http可以把它看做是浏览器XmlHttp:可以解释为把xml的内容读到浏览器上(网页上),把这句话封装一下,见下XmlHttp是浏览器对象,起的 ...
- js JSONP实例
<script type="text/javascript"> $(function(){ checkuserstatus(); $('#loginbutton').c ...
- python之map和filter
li = [11,22,33,44,55,66] ret = filter(lambda a:a>33,li) print(list(ret)) ret2 = map(lambda a:a+10 ...
- layer弹出标签层tab
引入文件: <script type="text/javascript" src="layer/layer.min.js"></script& ...
- 嵌入式学习笔记(虚拟机共享文件夹配置-Ubuntu系统中)
最近在学习Linux的操作系统,使用的是虚拟机.由于一些文件需要在主机和虚拟机中都要编辑,如果可以使得文件共享,可以极大的提高工作效率! 配置共享文件的步骤如下: [第一步] 在虚拟机软件中设置 [第 ...
- Delphi应用程序的调试(十)调试器选项(在IDE中不要使用异常)
可在两个级别上设置调试选项:工程级和环境级.在前面的讲解中讲解了工程级调试选项,通过主菜单[Project | Options…]打开如下对话框: 可在Debugger Options对话框中设置全局 ...
- Android入门之时间日期控件
效果图: MainActivity.java package com.jkxqj.helloandroid; import android.app.Activity; import android.o ...
- BZOJ1264: [AHOI2006]基因匹配Match
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 541 Solved: 347[Submit][S ...
- 2015第30周三Spring常用工具类
文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...
- GruntJs安装及使用入门(自定义grunt任务,合并压缩js、css)
一.Grunt.js简介(实现自动化) 1)简要说明: 1.GruntJs是基于node的javascript命令行工具,可以自动化构建.测试.生成文档的项目管理工具: 2.使用GruntJs可以自动 ...