前天,十六进制转换十进制,写完代码之后才知道有更简单的代码实现:
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();
}
本文介绍了一种从十六进制转换到十进制的方法,并提供了一个C语言实现的例子。作者分享了自己最初编写的代码及一种更简洁的实现方式。

413

被折叠的 条评论
为什么被折叠?



