Pergunta

Em C I necessidade de dimensionar um uint8_t 0-255, 0 - 31

Qual é a melhor maneira de fazer isso de forma uniforme?

Foi útil?

Solução

Se você está tentando escala de 8 bits para 5 bits, você pode fazer uma mudança 3 bit;

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

Esta cai inferiores 3 bits.

Outras dicas

Você pode usar algumas simples multiplicação e divisão:

uint8_t scaled = (uint8_t)(((uint32_t)original * 32U) / 256U);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top