Was ist die beste Art und Weise gleichmäßig ein Byte zu skalieren?
Frage
C brauche ich eine uint8_t
von 0 maßstabs - 255-0 - 31
Was ist der beste Weg, dies gleichmäßig zu tun?
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