C++实现十六进制字符串转换为十进制整数的方法
本文实例讲述了C++实现十六进制字符串转换为十进制整数的方法。分享给大家供大家参考。具体实现方法如下:
/* *将十六进制数字组成的字符串(包含可选的前缀0x或0X)转换为与之等价的整型值 */ #include<stdio.h> #include<math.h> /*将十六进制中的字符装换为对应的整数*/ inthexchtoi(charhexch) { charphexch[]="ABCDEF"; charqhexch[]="abcdef"; inti; for(i=0;i<6;i++){ if((hexch==phexch[i])||(hexch==qhexch[i])) break; } printf("i=%d",i); if(i>=6){ return0;/*非十六进制字符*/ } return10+i; } inthtoi(chars[]) { intn=0;/*有n位*/ intvalu=1;/*是否有效*/ inti=0,j; intanswer=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<n;j++){ answer+=((int)pow(16,j)*hexchtoi(s[i-j-1])); } } else answer=-1; returnanswer; } main() { char*n[]={"0x7ff0","0x2341"}; printf("%sis%d\n",n[0],htoi(n[0])); printf("%sis%d\n",n[0],123); }
希望本文所述对大家的C++程序设计有所帮助。