前天,十六进制转换十进制,写完代码之后才知道有更简单的代码实现:
int a;
sscanf("abc", "%x", a);
顺便附上我写的,
#pragma hdrstop
#include <math.h>
#include <stdio.h>
#include <string.h>
int hex_char_value(char c);
int hex_to_decimal(const char* szHex);
//---------------------------------------------------------------------------
#pragma argsused
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 = strlen(szHex)/sizeof(*szHex);
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;
}
int main(int argc, char* argv[])
{
//int a =hex_to_decimal("eee");
printf("%d",hex_to_decimal("eee"));
getchar();
}