MFC 十六进制字符串"0x*****”转为十进制数

您所在的位置:网站首页 十进制216转十六进制 MFC 十六进制字符串"0x*****”转为十进制数

MFC 十六进制字符串"0x*****”转为十进制数

2024-06-27 09:08| 来源: 网络整理| 查看: 265

MFC 十六进制字符串"0x*****”转为十进制数

在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如: char *ptr="0x11"; int n=0; //我们想让n等于0x11,即17

通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:

[cpp] view plain copy char *ptr="123";     int n=0;  n=atoi(ptr);  printf("%d/n",n);  //输出:123  [cpp] view plain copy char *ptr="123";      int n=0;  n=atoi(ptr);  printf("%d/n",n);  //输出:123  

但是atoi库函数只能将十进制字符串转化为int整形,比如下面的例子:

[cpp] view plain copy #include  #include //atoi头文件   int main(void)  {      int n;      char *str = "12345.67";     n = atoi(str); //int atoi(const char *nptr);     printf("string = %s integer = %d/n", str, n);     return 0;   }  /*输出:   string = 12345.67 integer = 12345 */  [cpp] view plain copy #include    #include //atoi头文件   int main(void)   {      int n;      char *str = "12345.67";      n = atoi(str); //int atoi(const char *nptr);      printf("string = %s integer = %d/n", str, n);      return 0;   }  /*输出:   string = 12345.67 integer = 12345 */  

所以要用atoi函数将"0x11"转化为十进制整形17是不行的。如果用的话,会输出下面的结果:

[cpp] view plain copy int n;   char *str = "0x11";  n = atoi(str); //返回值n等于0 (显然不是我们想要的结果)  [cpp] view plain copy int n;   char *str = "0x11";   n = atoi(str); //返回值n等于0 (显然不是我们想要的结果)  

那怎么办呢?这时有人会想,那好办,我们自己写个函数转化下就行了,比如用下面的方法: 注意:我们用VC 6.0建了一个Win32控制台程序,为了方便,程序中使用了CString类型变量,需要做一点修改。 (1)包含afx.h头文件 (2)在Project->Settings->General->Mircosoft Foundation Classes中,选择Use MFC in a Shared DLL 然后我们就可以在Win32控制台下使用CString变量了,否则会出现编译错误。

[cpp] view plain copy #include  #include   int ChangeNum(CString str,int length)    {         char  revstr[16]={0}; //根据十六进制字符串的长度,这里注意数组不要越界      int   num[16]={0};         int   count=1;        int   result=0;         strcpy(revstr,str);         for   (int i=length-1;i>=0;i--)        {             if ((revstr[i]>='0') && (revstr[i]='a') && (revstr[i]='A') && (revstr[i]=0;i--)         {             if ((revstr[i]>='0') && (revstr[i]='a') && (revstr[i]='A') && (revstr[i]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3