1バイトを均等にスケーリングする最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/603569

  •  03-07-2019
  •  | 
  •  

質問

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top