2014-10-06 93 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