C++实现十六进制字符串转换为十进制整数的方法
本文实例讲述了C++实现十六进制字符串转换为十进制整数的方法。分享给大家供大家参考。具体实现方法如下:
/*
* 将十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值
*/
#include
#include
/* 将十六进制中的字符装换为对应的整数 */
int hexchtoi(char hexch )
{
char phexch[] = "ABCDEF";
char qhexch[] = "abcdef";
int i;
for(i=0;i<6;i++){
if((hexch == phexch[i]) || (hexch == qhexch[i]))
break;
}
printf("i=%d",i);
if(i >= 6){
return 0; /* 非十六进制字符 */
}
return 10+i;
}
int htoi(char s[])
{
int n=0; /*有n位*/
int valu=1; /*是否有效*/
int i=0,j;
int answer=0;
/* 有效性检查 */
if((s[0] == '0') && ((s[1] == 'x') || (s[1] == 'X'))){
i += 2;
}
while((s[i] != '\n')){
if((s[i] < '0') && (s[i] > '9')){
if(hexchtoi(s[i]) == 0){
valu=0;
break;
}
}
n++;
i++;
}
if(valu != 0){
for(j=0;j
answer += ((int)pow(16,j) * hexchtoi(s[i-j-1]));
}
}
else
answer = -1;
return answer;
}
main()
{
char *n[] = {"0x7ff0","0x2341"};
printf("%s is %d\n",n[0],htoi(n[0]));
printf("%s is %d\n",n[0],123);
}
希望本文所述对大家的C++程序设计有所帮助。相关阅读:
ubuntu15.04英文版界面怎么设置成中文?
深入探究TimSort对归并排序算法的优化及Java实现
ASP.NET刷新页面的几种方法详解
基于gulp合并压缩Seajs模块的方式说明
JS作为值的函数用法示例
Android数据类型之间相互转换系统介绍
win8升级win8.1系统失败提示错误代码0x80070006 - 0x2000c的解决方法
使用CSS代码的空格实现中文对齐的方法
CSS利用伪元素实现导航栏斜线分隔
JDBC使用游标实现分页查询的方法
PHP+Memcache实现wordpress访问总数统计(非插件)
22点关于jquery性能优化的建议
常用jQuery选择器总结
Linux下用gzip和unzip命令来压缩和解压文件的用法