Qual è il modo migliore per ridimensionare uniformemente un byte?
Domanda
In C devo ridimensionare un uint8_t
da 0 - 255 a 0 - 31
Qual è il modo migliore per farlo in modo uniforme?
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