2017-05-05 57 views
-4

我想一個浮點值轉換爲十六進制的數組。這裏是我的代碼:如何浮動轉換爲十六進制陣列

int main(void) 
{ 

    int8_t float_data[4] = { 0x08, 0x01, 0x01, 0x01 }; 

    float f_value = 12.59; 

    *(float_data) = f_value; 

    int i = 0; 

    while (i != 4) 
     printf("%x", float_data[i++]); 

} 

我想我的浮點值插入float_data爲4個字節的十六進制值。我怎樣才能做到這一點?

+3

縮進/格式化............. – ThingyWotsit

+0

C或C++? C++的方式可能是這樣的:'* reinterpret_cast (float_data)= f_value;'? – sgarizvi

+0

你會得到什麼輸出和你期望的輸出? –

回答

1

你想可能是一個壞主意(閱讀評論)什麼。

不管怎樣,試試這個

memmove(float_data, &f_value, sizeof (float)); 
+0

所以最好還是申報緩衝區'uint8_t float_data [的sizeof(浮動)] = {0};' – LPs

+2

我會用'無符號char'而不是可選的'uint8_t',不過是去:這比OP選擇更好。 – pmg

2

也許你想這樣的:

int main(void) 
{ 
    float f_value = 12.59; 
    uint8_t *float_data = (uint8_t*)&f_value; 
    int i = 0; 

    while (i != 4) 
    printf("%02x ", float_data[i++]); 

    printf("\n"); 
} 
+0

我會改變聲明使用'uint8_t'而不是'int8_t' – LPs

+1

@LPs你是對的,完成 –

相關問題