1

CI では、auint8_tを 0 ~ 255 から 0 ~ 31にスケーリングする必要があります

これを均等に行うための最良の方法は何ですか?

4

2 に答える 2

12

8 ビットから 5 ビットにスケーリングしようとしている場合は、3 ビット シフトを行うことができます。

uint8_t scaled = (uint8_t)(original >> 3);

これにより、下位 3 ビットがドロップされます。

于 2009-03-02T19:13:58.623 に答える
1

簡単な乗算と除算を使用できます。

uint8_t scaled = (uint8_t)(((uint32_t)original * 32U) / 256U);
于 2009-03-02T19:17:31.657 に答える