次のCコード行は、カメラからの画像を格納する配列を作成します。画像は約22kbです。cで配列のサイズを変更するには? 32ビットmcu
uint8_t picturearray[32*1024];
mcuは32ビットです。私はなぜそれが32*1024
であるのだろうかと思っていますか?それは32ビットなので32ですか?なぜ1024になるのですか?それはそれはメモリの32キロバイトを望んでいるので、ということである
おかげ
次のCコード行は、カメラからの画像を格納する配列を作成します。画像は約22kbです。cで配列のサイズを変更するには? 32ビットmcu
uint8_t picturearray[32*1024];
mcuは32ビットです。私はなぜそれが32*1024
であるのだろうかと思っていますか?それは32ビットなので32ですか?なぜ1024になるのですか?それはそれはメモリの32キロバイトを望んでいるので、ということである
おかげ
自己文書化コードを書き込もうとしています。 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
という接尾辞を使用してください。
。 1キロバイトは1024バイト、32*1024
は32キロバイトです。
カメラはどのようなピクセル形式と解像度を使用しますか?最も可能性の高い記法は、単純にキロバイト単位のサイズを与えるために使用されます(32 x 1024バイト= 32キロバイト)。 – user694733
答えは多くのことに依存します。その小さな情報であなたの質問に答えることはできません。 –