永发信息网

要求将一个16进制的(char字符串表示的,带0x符号)数转成10进制的数(同样是char指针表示的)。

答案:1  悬赏:80  手机版
解决时间 2021-03-18 01:45
  • 提问者网友:爱了却不能说
  • 2021-03-17 05:14
我的思路是将16进制数首先去掉符号,转成10进制的数字,再利用itoa函数转成字符串输出。

求大神帮我理清思路和想法,代码无所谓。要求C,可以使用c的库函数。主要是实现思路。
最佳答案
  • 五星知识达人网友:独钓一江月
  • 2021-03-17 06:28
#include<STDIO.H>
#include<STRING.H>
#include<STDLIB.H>
#include<MATH.H>

void main()
{
char hex_0x[]="0x78deFg",
hex[10],
Dec[10];
int val= 0,
len,
i;
strcpy(hex, strstr(hex_0x, "0x")+2);//去除 0x
strupr(hex);//将小写字符转换成大写

len= strlen(hex);
for(i= 0; i < len; i++)//将十六进制数 以十进制整数表示
{
if(hex[i] >= '0' && hex[i] <= '9')
val+= (hex[i]-48)*pow(16, len-i-1);

else if(hex[i] >= 'A' && hex[i] <= 'F') val+= (hex[i]-55)*pow(16, len-i-1);
else
{
puts("有非法字符!");
getchar();
exit(1);
}
}

itoa(val, Dec, 10);
puts(Dec);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯