Frage

C brauche ich eine uint8_t von 0 maßstabs - 255-0 - 31

Was ist der beste Weg, dies gleichmäßig zu tun?

War es hilfreich?

Lösung

Wenn Sie versuchen, von 8 Bit auf 5 Bit zu skalieren, können Sie eine 3-Bit-Verschiebung tun;

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

Dies fällt die unteren 3 Bits.

Andere Tipps

Sie können einige einfache Multiplikation und Division verwenden:

uint8_t scaled = (uint8_t)(((uint32_t)original * 32U) / 256U);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top