我正在使用下面的函数将十六进制转换为十进制,但是它没有打印正确的结果。
谁能帮我这个??
感谢你..

#include<stdio.h>
#include<stdlib.h>
long hextoint(char hex)
{
printf("%x\n",hex);
long hexa=0;
int byte;
for(byte=0;byte<8;byte++)
{
    if(hex & (0x0001<<byte))
    {
        hexa+=1*(2^byte);
    }

    else
    {
        hexa+=(0*(2^byte));
    }
}

return hexa;
}
int  main()
{
char content[]={0x1F,0xF2,0x24};
int i;
for(i=0;i<3;i++)
{
    long dec=hextoint(content[i]);
    printf("%ld\n",dec);
}
}

最佳答案

char值只是作为二进制形式存储在计算机中的数字值。如果要将其转换为十六进制或十进制,这只是相同值的表示,因此功能hextoint并没有任何意义,仅在输出时才有意义。

您可能的意思是输出一个可以为十进制或十六进制的字符串,为此,您可以像示例代码中那样使用printf系列函数。

更新

阅读您的评论,您真正的问题似乎出在float/doubleint上,但这与十六进制或十进制表示形式无关。

如果要进行23/100之类的计算,结果为0.23,则必须使用floatdouble变量。在您的示例中,您使用char,如果无符号,则只能表示0-255之间的自然数;如果带符号,则只能表示-127至128。

10-07 19:11
查看更多