0

所以我想验证语言 C 中数字 1.0 的十六进制表示,下面是我的代码:

int main(int argc, char **argv)
{
    void showBytes(unsigned char * p,int size){
        int i;
        for (i=0;i<size;i++){
            printf("%.2x",p[i]);
        }
    }

    float f;
    f=1.0;
    showBytes((unsigned char *)&f,sizeof(f));
    return 0;
}

当我构建并运行我的程序时,我得到 39300000,这不是 1.0(00003039) 的正确表示。谁能向我解释为什么我得到这个不正确的值?谢谢!!!

4

1 回答 1

10

这是字节序不匹配。您正在使用一种字节序约定显示该值,但您的预期值使用另一种约定。

字节序是整数数据类型的一个众所周知的问题,但可能不太为人所知的字节序也会影响浮点表示。

于 2013-06-11T13:30:14.723 回答