均匀缩放一个字节的最佳方法是什么?

时间:2009-03-02 19:11:13

标签: c integer

在C中,我需要将uint8_t从0 - 255缩放到0 - 31

平均做到这一点的最佳方法是什么?

2 个答案:

答案 0 :(得分:12)

如果您尝试从8位扩展到5位,则可以进行3位移位;

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

这会降低低3位。

答案 1 :(得分:1)

您可以使用一些简单的乘法和除法:

uint8_t scaled = (uint8_t)(((uint32_t)original * 32U) / 256U);