十六进制转换为十进制的效率问题
来源:互联网 发布:windows桌面图标透明 编辑:程序博客网 时间:2024/05/21 17:00
十六进制转换为十进制这样说有点笼统,因为一般来说十六进制是字符串,十进制也可能是字符串或是整数。下面我们来看看。
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
阅读全文
0 0
- 十六进制转换为十进制的效率问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制“字符串”转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制字符串转换为十进制数值的问题
- 将一个十六进制“字符串”转换为十进制数值的问题
- 十进制转换为十六进制
- 十六进制转换为十进制
- 十进制转换为十六进制
- 十进制转换为十六进制
- 51---动态数码管
- 机器学习大牛对话
- Python学习--------列表(一)
- Leetcode 算法题02
- AlphaZero成功了,AI要取代人类了?
- 十六进制转换为十进制的效率问题
- Java实现URLEncode编码
- xml(code)
- 15.3.1 FileReader
- 页面布局 --- 题图文字布局
- Fragment基础知识整理
- Linux 常用命令(二)
- bzoj1068压缩
- window下svn安装与其服务器搭建