C++如何将int型的16进制转化为10进制

定义了一个uint16_t类型的数据,如何转化为10进制,希望代码不要太长,谢谢指导

int hex_char_value(char c)     
{     
        if(c >= '0' && c <= '9')     
                return c - '0';     
        else if(c >= 'a' && c <= 'f')     
                return (c - 'a' + 10);     
        else if(c >= 'A' && c <= 'F')     
                return (c - 'A' + 10);     
        assert(0);     
        return 0;     
}     
int hex_to_decimal(const char* szHex, int len)     
{     
        int result = 0;     
        for(int i = 0; i < len; i++)     
        {     
                result += (int)pow((float)16, (int)len-i-1) * hex_char_value(szHex[i]);     
        }     
        return result;     
}   

参考:https://zhidao.baidu.com/question/982353511457126259.html

直接赋值
uint16_t hex = 0x1212;
int dec = hex;

32位操作系统
int16 字节数16
int 字节数32

int16转int:int16 & 0x0000FFFF

 或者
 int x;

sscanf("abc", "%x", x);