在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