字串表示一个十六进制的数,怎么转成其代表的数据大小??

2025-04-19 07:08:41
推荐回答(1个)
回答1:

/*下面的程序,已经验证通过,自己可以编译出来运行一下看看。*/

#include
#include

int str2hex(const char *ch) /* 字符串转16进制数 */
{
int i=0, tmp, result=0;

for(i=0; i {
if((ch[i]>='0')&&(ch[i]<='9'))
tmp = ch[i]-'0';
else if((ch[i]>='A')&&(ch[i]<='F'))
tmp = ch[i]-'A'+10;
else if((ch[i]>='a')&&(ch[i]<='f'))
tmp = ch[i]-'a'+10;
else
return -1; /* 出错了 */

result = result*16+tmp; /* 转成16进制数后加起来 */
}
return result;
}

int main(void)
{
char ch[] = "499602D2";
char bufDec[10];
char bufHex[10];
int i=0;
i = str2hex(ch); /* 16进制字符串转成整数 */
/* 反过来,可以调用sprintf函数 */
sprintf(bufDec, "%d", i);
sprintf(bufHex, "%x", i);
printf("Dec=%s,Hex=%s\n", bufDec, bufHex);
/* 或者用printf函数直接输出显示 */
printf("i=%d=%x", i, i);/* 反过来只要调用printf函数就可以了 */
return 0;
}