2012-11-12 69 views
2

不好意思問這一點,但我已經尋找這個小東西,發現下面的鏈接此有關的財產以後,但無法得到任何想法存儲浮點值,爲unsigned char陣列

  1. How to store floats in array to be used later?

  2. storing in unsigned char array

如何將浮點值的存儲值設爲0.00895爲以後用於存儲在內存緩衝區中的無符號字符。

後來我需要讀取數組並返回內存。

謝謝

+0

爲什麼你需要(想)將float值存儲在unsigned char數組中?您可以使用浮點值。在任何情況下,它都是以字節塊的形式存儲在內存中的。 –

+0

,因爲我的緩衝區函數用於將數據存儲到內存中,它的參數是一個無符號的char.I沒有讓你的abt浮點值? – user1016528

回答

3

你不需要memcpy這個......如果你在內存中拷貝一個float數組到緩衝區中其他地方將是有益的。你真正需要的是使用不同的指針類型來查看字符數組。

const size_t BUFSIZE = 4096; 
char buffer[BUFSIZE]; 
float *f_buf = (float*)buffer; 

如果你想一切都堅持一個浮點到緩衝區的開始,無論是以下兩行的是好的:

*f_buf = 0.00895; 

f_buf[0] = 0.00895; 

所有它實際上做的是讓你看到緩衝區作爲一組浮標。

int i; 

/* Put a bunch of floats into the buffer */ 
for(i = 0; i < 10; i++) { 
    f_buf[i] = i/2; 
} 

/* Display contents of buffer in hex */ 
for(i = 0; i < 10 * sizeof(float); i++) { 
    printf("%02x", (int)buffer[i]); 
} 
printf("\n"); 

/* Sanity-test the buffer contents */ 
for(i = 0; i < 10; i++) { 
    printf("%d: %f\n", i, f_buf[i]); 
} 
+0

是的這看起來是我正在尋找,但我想存儲在一個無符號字符的浮點值。 – user1016528

+0

你的意思是* unsigned char *的數組*,對嗎?在這種情況下,在我的例子中使用'unsigned char'而不是'char'。沒什麼區別。如果你的意思是一個* single *'unsigned char',那你就是在做夢。一個'float'佔用四個字節,而一個'char'只佔一個。 – paddy

+0

當我試圖測試緩衝區內容像這樣'* f_buf = 0.00895; check = buffer [0]; \t \t \t \t \t \t \t sprintf(value_current,「%f」,check); \t \t \t \t \t \t \t position = 0x40; Lcd_move(position); Lcd_puts(value_current);'輸出是152,但緩衝區實際上包含0.00895。這個值是什麼? – user1016528

2

您可以將float的內存複製到char緩衝區中。

float a; 
char buffer[sizeof(float)]; 
memcpy(buffer,&a,sizeof(float)); 
+0

我可以使用sprintf(value_current,「%d」,buffer [0]);看到我的輸出在緩衝區的第0個元素。我可以看到緩衝區的數據。 – user1016528

+0

是的,即使它很難閱讀,但更喜歡%c或%X。 – dzada

相關問題