怎么把一个十六进制的字符串转换成十进制的数值

如何把一个十六进制的字符串转换成十进制的数值?
如何把一个十六进制的字符串转换成十进制的数值?
UCHAR   m_buf[32]定义了一个16进制字符串.

------解决方案--------------------
这个你是要一个算法还是函数啊?

算法这样:

int change(char old[])
{
int sum=0;
int k=1;
int len=strlen(old);
while(len> 0)
{
if(old[len-1]> = 'A ' && old[len-1] <= 'F ')
old[len-1]-=7;
sum=sum+k*(old[len-1]- '0 ');
len--;
k*=16;
}
return sum;
}

void main()
{
char x[]= "2AB ";
cout < <change(x) < <endl;
}
------解决方案--------------------
你看对不对
#include <iostream>
#include <math.h>
#include <ctype.h>
using namespace std;

void main()
{
char buf[] = "A12 ";
int a,i;
char c;
int k;

for(k = 0,a = 0,i = strlen(buf) - 1;i > = 0;i--,k++){
if(isdigit(buf[i]))
a += (buf[i] - '0 ')*pow(16,k);
else if(isalpha(buf[i]))
a += ((buf[i] - 'A ')+10)*pow(16,k);
}
cout < <a < <endl;

}