如何在c中打印float的二进制值

时间:2014-10-06 07:27:41

标签: c memory

我想通过直接访问内存来打印给定float的二进制值我使用此代码来访问int的值

int var = 34;

int *ptr;

ptr = &var;


printf("\nDirect access, variable var value = var = %d", var);

我想知道如何访问浮动的内存量并打印它

1 个答案:

答案 0 :(得分:4)

使用联盟:

typedef union {
    float f;
    uint8_t a[sizeof(float)];
} U;

然后像这样打印:

U u = { 42.0f };

for (int i = 0; i < sizeof(float); ++i)
{
    printf("%02x", u.a[i]);
}

请注意,这是C89中技术上实现定义的行为(尽管即使使用C89编译器也不会失败),但在C99和C11中完全没问题 - 有关详细信息,请参阅this post。 p>