十六进制转换为十进制这样说有点笼统,因为一般来说十六进制是字符串,十进制也可能是字符串或是整数。下面我们来看看。

1.十六进制字符串转换为十进制的字符串

#include<stdio.h>int main()
{char str1[10]="32";//十六进制char str2[10]={0};//十进制sscanf(str1,"%02X",str2);printf("str2=%s\n",str2);return 0;
}

打印:str2=2

另一种方法:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int hexCharToValue(const char ch)//求字符串对应的偏移量
{int result = 0;if(ch >= '0' && ch <= '9'){result = (int)(ch - '0');}else if(ch >= 'a' && ch <= 'z'){result = (int)(ch - 'a') + 10;}else if(ch >= 'A' && ch <= 'Z'){result = (int)(ch - 'A') + 10;}else{result = -1;}return result;
}int hexToStr(char *hex, char *ch)
{int high,low;int tmp = 0;if(hex == NULL || ch == NULL){return -1;}if(strlen(hex) %2 == 1){return -2;}while(*hex){high = hexCharToValue(*hex);//高位if(high < 0){*ch = '\0';return -3;}hex++; //指针移动到下一个字符上low = hexCharToValue(*hex);//地位if(low < 0){*ch = '\0';return -3;}tmp = (high << 4) + low;*ch++ = (char)tmp;hex++;}*ch = '\0';return 0;
}int main(int argc, char *argv[])
{char *p_hex = "32";//十六进制char p_result[20] = {0};//十进制hexToStr(p_hex, p_result);  printf("%s\n", p_result);system("pause");return 0;
}

打印:2

这两种方式都能解决问题,很明显第二种看起来复杂的多,但是实际用起来,第二种方法比第一种方法高效。实际工作中我解密的时候就碰到过这种情况,然后换了第二种方法。

2.十六进制字符串转换成十进制整形

#include<stdio.h>int main()
{char str1[10]="32";//十六进制int a=0; //十进制sscanf(str1,"%02X",&a);printf("a=%d\n",a);return 0;
}

打印:a=50

这个也可以用第二种方法,稍微变幻一下就行了。

十进制转十六进制用sprintf用的多,这个大家可以试一下。十六进制作为整数转十进制字符串到没怎么遇到过,十六进制整数转十进制数就不说了。主要还是sscanf效率低。

参考地址:

http://blog.csdn.net/stpeace/article/details/13168851

http://blog.chinaunix.net/uid-20680669-id-3157274.html

十六进制转换为十进制的效率问题相关推荐

  1. 任意进制转换为十进制(十六进制转换为十进制)

    一.十六进制转换为十进制 unsigned long HextoDec(char *hex, int length) {int i;unsigned long rslt = 0;for (i = 0; ...

  2. 一种在程序中将十六进制转换为十进制的简单方法

    在网上找了很多将十六进制转换为十进制的方法,都比较复杂:后来自己想了一个比较简单的方法,跟大家分享一下! 以下是C++语言编写的代码: #include<iostream> using n ...

  3. 在LabVIEW中将十六进制转换为十进制或ASCII

    更新 Nov 12, 2020 环境 软件 LabVIEW 在LabVIEW中,如何将十六进制值转换为十进制值?当前,我正在尝试使用"扫描值功能",但不确定需要连接什么. 我正在与 ...

  4. C语言实现十六进制转换为十进制的方法

    这篇文章主要为大家详细介绍了C语言实现十六进制转换为十进制的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下 题目描述 输入一个十六进制数字串,将其转换成为对应的整数并输出转换结果 ...

  5. c语言栈10转16进制,用栈实现十六进制转换为十进制.doc

    用栈实现十六进制转换为十进制 数据结构上机报告 班 级信科2班学 号19姓 名李柏威 实验内容:利用栈的基本操作,写一个C程序实现将十进制数转化为十六进制数 实验目的:掌握栈的操作 提交内容: C语言 ...

  6. 将二进制、八进制、十六进制转换为十进制

    上节我们对二进制.八进制和十六进制进行了说明,本节重点讲解不同进制之间的转换,这在编程中经常会用到,尤其是C语言. 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容 ...

  7. python中二进制转化为十进制_将二进制、八进制、十六进制转换为十进制

    学习视频 9节课征服「字符编码」-1-字符.字符集.字符编号与字符编码(基础课)-周华健的在线视频教程​edu.csdn.net 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相 ...

  8. C语言【程序48】题目:八进制转换为十进制、二进制转换为十进制、十进制转换为二进制 、十进制转换为八进制、十六进制转换为十进制、十进制转换为十六进制

    基本思想: 八进制转十进制,二进制转十进制都一样的道理 八进制 --> 十进制 //[程序48] //题目:八进制-->十进制 #include<stdio.h> #inclu ...

  9. 十六进制转换为十进制(利用ASCII码简化运算)

    不需要每个字母都写一个函数也不需要进行复杂的转换,利用如下的方法通过ASCII进行转换即可 例:2AF5换算成10进制: 用竖式计算: 第0位: 5 * 16^0 = 5 第1位: F * 16^1 ...

最新文章

  1. 重设wordpress用户密码
  2. 比尔盖茨2016好书推荐
  3. 004:STM32启动文件详解及SystemInit函数分析(转)
  4. 干货!各国圣诞放假时刻表!
  5. QT的QWinTaskbarButton类的使用
  6. 关键字Restrict
  7. android 横向stepview,一款由Recyclerview打造的步骤控件,支持横向和纵向
  8. 启动失败_启动失败了?
  9. Node.js下载及安装步骤
  10. 【NOIP2016普及组复赛模拟赛】买装备(equipment)
  11. factorial函数
  12. SCU-3968 Mowing the Lawn(DP+单调队列)
  13. 核磁共振测井设备市场现状及未来发展趋势分析
  14. VMware连接不上网
  15. 如何升级自己的思维?成为你想成为的自己。
  16. yum配置代理proxy
  17. 【SpringBoot】3、SpringBoot中整合Thymeleaf模板引擎
  18. JDK自带的Timer定时器实现每天24点修改数据
  19. MYSQL数据累加后出现断层问题
  20. WPS文字编辑区鼠标不能显示

热门文章

  1. Luogu 2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
  2. 小程序---canvas画图,生成分享图片,画图文字换行
  3. (五)Cisco dhcp snooping实例3-多交换机环境(DHCP服务器和DHCP客户端位于同VLAN)...
  4. nested exception is java.lang.IllegalStateException: Context namespace element 'annotation-config' a
  5. 应用SilverLight 2.0 BETA 2的 支持回调的在线聊天室(二)
  6. VS.NET 2005 SP1 安装注意
  7. linux(2)- 共享内存的实现
  8. linux(1)- 简单的 shell 解释器
  9. 微软宣布Azure Function支持Python
  10. linux命令(51):set 指定行,直接替换并修改文件