C语言实现 字符串转化为 16进制整形数据?解决办法

C语言实现 字符串转化为 16进制整形数据?
比如 字符串为  "f2"用C实现把这个字符串转换为 一个十六进制的整形数据 0xf2.该咋破
------解决思路----------------------

int str2int(char *str)
{
int n=0;
while(*str)
{
n<<=4;
if(*str<='9')
n
------解决思路----------------------
=*str-'0';
else
n
------解决思路----------------------
=(*str&~0x20)-'A'+10;
++str;
}
return n;
}