Domanda

In C devo ridimensionare un uint8_t da 0 - 255 a 0 - 31

Qual è il modo migliore per farlo in modo uniforme?

È stato utile?

Soluzione

Se stai provando a scalare da 8 bit a 5 bit, puoi fare uno spostamento di 3 bit;

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

Questo rilascia i 3 bit inferiori.

Altri suggerimenti

Puoi usare alcune semplici moltiplicazioni e divisioni:

uint8_t scaled = (uint8_t)(((uint32_t)original * 32U) / 256U);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top