题
在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