2014-10-06 97 views
0

浮动的二进制值,我只想通过直接访问我用这个代码访问的一个int如何打印在C

int var = 34; 

int *ptr; 

ptr = &var; 


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

我想知道的价值打印内存中给定的浮动的二进制值如何访问一个浮动的存储量和打印

+0

这里是一切'int' – Rustam 2014-10-06 07:35:12

+0

@JimBalter我的问题是通过访问内存访问内存不会将其转换为二进制或十六进制 – 2014-10-06 07:43:33

+1

呃,你甚至读过链接,它提供了一个类似的解决方案你在下面接受?你问天,“如何在C中打印浮点数的二进制值”。你后来写了“我想知道如何访问float的内存量” - 一个完全不同的问题,答案是'sizeof(float)'。 – 2014-10-06 07:56:59

回答

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

+0

FWIW,这是未定义的行为。 – 2014-10-06 07:31:16

+0

它是浮点转换为二进制还是直接访问内存? – 2014-10-06 07:41:26

+0

@JimBalter:只有在C89中,即使这样也不太可能导致问题 - 请参阅上面的编辑。 – 2014-10-06 07:43:53