关于网友提出的“ 进制转换问题???”问题疑问,本网通过在网上对“ 进制转换问题???”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 进制转换问题???
描述: char *AD = "0003,002,0010,005a";
AD代表一个16进制数,如何用c程序转换成十进制数
解决方案1: 参考一下吧!
int convert(char* data)
{
int Res = 0;
char* p = data;
while (*p != '\0')
{
if (*p >= '0' && *p <= '9')
Res = Res * 16 + *p - '0';
else if (*p >= 'a' && *p <= 'f')
Res = Res * 16 + *p - 'a' + 10;
else if (*p == ','){}
else
return -1;
p++;
}
return Res;
}
解决方案2: 仅供参考:
#include
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
p=s;
while (1) {
k=sscanf(p,"%d%n",&v,&n);
printf("k,v,n=%d,%d,%d\n",k,v,n);
if (1==k) {
p+=n;
} else if (0==k) {
printf("skip char[%c]\n",p[0]);
p++;
} else {//EOF==k
break;
}
}
printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
解决方案3:
int main(void) {
int i;
char *AD = "00030020010005a";
sscanf(AD, "%x", &i);
printf("%d", i);
return 0;
}
//1048666
解决方案4: 参看:http://blog.csdn.net/ixidof/article/details/6081217
以上介绍了“ 进制转换问题???”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2004597.html