不好意思問這一點,但我已經尋找這個小東西,發現下面的鏈接此有關的財產以後,但無法得到任何想法存儲浮點值,爲unsigned char陣列
如何將浮點值的存儲值設爲0.00895爲以後用於存儲在內存緩衝區中的無符號字符。
後來我需要讀取數組並返回內存。
謝謝
不好意思問這一點,但我已經尋找這個小東西,發現下面的鏈接此有關的財產以後,但無法得到任何想法存儲浮點值,爲unsigned char陣列
如何將浮點值的存儲值設爲0.00895爲以後用於存儲在內存緩衝區中的無符號字符。
後來我需要讀取數組並返回內存。
謝謝
你不需要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]);
}
是的這看起來是我正在尋找,但我想存儲在一個無符號字符的浮點值。 – user1016528
你的意思是* unsigned char *的數組*,對嗎?在這種情況下,在我的例子中使用'unsigned char'而不是'char'。沒什麼區別。如果你的意思是一個* single *'unsigned char',那你就是在做夢。一個'float'佔用四個字節,而一個'char'只佔一個。 – paddy
當我試圖測試緩衝區內容像這樣'* 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
您可以將float的內存複製到char緩衝區中。
float a;
char buffer[sizeof(float)];
memcpy(buffer,&a,sizeof(float));
我可以使用sprintf(value_current,「%d」,buffer [0]);看到我的輸出在緩衝區的第0個元素。我可以看到緩衝區的數據。 – user1016528
是的,即使它很難閱讀,但更喜歡%c或%X。 – dzada
爲什麼你需要(想)將float值存儲在unsigned char數組中?您可以使用浮點值。在任何情況下,它都是以字節塊的形式存儲在內存中的。 –
,因爲我的緩衝區函數用於將數據存儲到內存中,它的參數是一個無符號的char.I沒有讓你的abt浮點值? – user1016528