https://88.wendadaohang.com/zd/M1aaVK1BS.html
编写一个函数htoi(s),把一个十六进制的字符串(包含0x或0X)转化成对应的数值,并在主函数中调用该函数进行验证
貌似不怎么行啊?那个CString是什么意思?
#include <iostream> //#include <stdio.h>
#include <afx.h>
int ChangeNum(CString str,int length) //C把CString改成指针
{
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]<='9'))
num[i]=revstr[i]-48;//字符0的ASCII值为48
else if ((revstr[i]>='a') && (revstr[i]<='f'))
num[i]=revstr[i]-'a'+10;
else if ((revstr[i]>='A') && (revstr[i]<='F'))
num[i]=revstr[i]-'A'+10;
else
num[i]=0;
result=result+num[i]*count;
count=count*16;//十六进制(如果是八进制就在这里乘以8)
}
return result;
}
int main()
{
CString str="0x11";
int n=0;
n=ChangeNum(str,str.GetLength()); //str.GetLength()用scanf()
printf("%d\n",n);
return 0;
}
/*输出:
17
*/ 来自:求助得到的回答
#include <afx.h>
int ChangeNum(CString str,int length) //C把CString改成指针
{
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]<='9'))
num[i]=revstr[i]-48;//字符0的ASCII值为48
else if ((revstr[i]>='a') && (revstr[i]<='f'))
num[i]=revstr[i]-'a'+10;
else if ((revstr[i]>='A') && (revstr[i]<='F'))
num[i]=revstr[i]-'A'+10;
else
num[i]=0;
result=result+num[i]*count;
count=count*16;//十六进制(如果是八进制就在这里乘以8)
}
return result;
}
int main()
{
CString str="0x11";
int n=0;
n=ChangeNum(str,str.GetLength()); //str.GetLength()用scanf()
printf("%d\n",n);
return 0;
}
/*输出:
17
*/ 来自:求助得到的回答