2016-04-26 13 views
-2

次のCコード行は、カメラからの画像を格納する配列を作成します。画像は約22kbです。cで配列のサイズを変更するには? 32ビットmcu

uint8_t picturearray[32*1024]; 

mcuは32ビットです。私はなぜそれが32*1024であるのだろうかと思っていますか?それは32ビットなので32ですか?なぜ1024になるのですか?それはそれはメモリの32キロバイトを望んでいるので、ということである

おかげ

+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

。 1キロバイトは1024バイト、32*1024は32キロバイトです。

関連する問題