C实现:16进制字符转换成10进制整

/************************************************************************************ ***/ /* author:AnYuanLzh            */ /* date: 2010-10-22          */ /* 编写一个函数(如:lzh_htoi(s),把由十六进制数字组成的字符   */ /* 串(前面可能包含0x或0X)转换成等价的整数值。字符串中允许的 */ /* 数字为:0~9,a~f,以及A~F。          */ /* VC++6.0下编译通过             */ /****************************************************************************************/ #define LEN 16     //LEN用来限定,字串的最大长度 #include /****子函数声明*****/ int lzh_gets(char []); //获取一个字符串 double lzh_htoi(char []); //将一由十六进制数字组成的字符串转换成造价的整数值 int main() {     char sNum[LEN]; //用来存放十六进制数字组成的字符串     double nNum; //用来保存转换好的整数     printf("请输一个16进制正整数,以回车键结束输入):");     lzh_gets(sNum);     if ( (nNum=lzh_htoi(sNum)) == -1 )     {          printf("要转换的不是不合法的16进制字符串/n");      }     printf("它对应的10进制整数:%.0f/n",nNum); } int lzh_gets(char s[]) {     int i, c;     for (i=0; (c=getchar())!='/n' && i='0' )         {              n = n*16 + (s[i]-'0');         }          else if ( s[i]<='f' && s[i]>='a' )          {              n = n*16 + (s[i]-'a')+10;          }         else if (s[i]<='F'&&s[i]>='A')          {             n = n*16 + (s[i]-'A')+10;         }          else          {              return -1; //反回-1表示,不是合法的16进制字符串          }         i++;      }      return n; }

你可能感兴趣的:(C/C++)