定义了一个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);