質問
Cでは、 uint8_t
を0〜255から0〜31にスケーリングする必要があります
これを均等に行う最良の方法は何ですか?
解決
8ビットから5ビットにスケーリングする場合、3ビットシフトを実行できます。
uint8_t scaled = (uint8_t)(original >> 3);
これにより、下位3ビットがドロップされます。
他のヒント
単純な乗算と除算を使用できます:
uint8_t scaled = (uint8_t)(((uint32_t)original * 32U) / 256U);
所属していません StackOverflow