MFC 十六进制字符串"0x*****”转为十进制数 |
您所在的位置:网站首页 › 十进制216转十六进制 › MFC 十六进制字符串"0x*****”转为十进制数 |
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 |