我想通过直接访问内存来打印给定float的二进制值我使用此代码来访问int的值
int var = 34;
int *ptr;
ptr = &var;
printf("\nDirect access, variable var value = var = %d", var);
我想知道如何访问浮动的内存量并打印它
答案 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>