2016-04-26 104 views
-2

下面一行c代碼創建一個數組來存儲來自攝像機的圖片。圖像大約22kb。如何在c中調整數組的大小? 32位單元

uint8_t picturearray[32*1024]; 

該單元是32位。我只是想知道爲什麼它是32*1024?它是32位,因爲它是32位的?爲什麼會是1024?

謝謝

+2

相機使用什麼像素格式和分辨率?最可能的符號用於簡單地給出以千字節爲單位的大小(32 x 1024字節= 32千字節)。 – user694733

+0

答案取決於很多事情。你的問題不能用那麼少的信息來回答。 –

回答

1

這是一個嘗試編寫自我記錄代碼。 32 * 1024「給我32kb」的提示。它比32768更清晰,這只是一個奇怪的「幻數」,沒有解釋。

(但顯然還不夠明確,或者你就不會問這個問題)

一個更加清晰的方式來寫相同本來是這樣的:

#define SIZE_32KB (32u * 1024u) 
... 
uint8_t picturearray [SIZE_32KB]; 

或許

#define SIZE_KB 1024u 
... 
uint8_t picturearray [32u * SIZE_KB]; 

注:在8/16位系統上,32 * 1024將是一個嚴重的錯誤!它會給整數溢出和未定義的行爲。使用u後綴在上面的整型常量上,以便使代碼具有可移植性。

3

這是因爲它想要32千字節的內存。一千字節是1024字節,而32*1024是32千字節。

相關問題