下面一行c代碼創建一個數組來存儲來自攝像機的圖片。圖像大約22kb。如何在c中調整數組的大小? 32位單元
uint8_t picturearray[32*1024];
該單元是32位。我只是想知道爲什麼它是32*1024
?它是32位,因爲它是32位的?爲什麼會是1024?
謝謝
下面一行c代碼創建一個數組來存儲來自攝像機的圖片。圖像大約22kb。如何在c中調整數組的大小? 32位單元
uint8_t picturearray[32*1024];
該單元是32位。我只是想知道爲什麼它是32*1024
?它是32位,因爲它是32位的?爲什麼會是1024?
謝謝
這是一個嘗試編寫自我記錄代碼。 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
後綴在上面的整型常量上,以便使代碼具有可移植性。
這是因爲它想要32千字節的內存。一千字節是1024字節,而32*1024
是32千字節。
相機使用什麼像素格式和分辨率?最可能的符號用於簡單地給出以千字節爲單位的大小(32 x 1024字節= 32千字節)。 – user694733
答案取決於很多事情。你的問題不能用那麼少的信息來回答。 –