将32位数转换为16位

Jed*_*eer 1 c 32-bit 16-bit percentage

我需要将一个数字转换为我的DAC最大值(0x0FFF)的百分比,所以我的代码就是这样:

double percent;
short pct;

percent = (0x0FFF * pct)/100;
Run Code Online (Sandbox Code Playgroud)

但我需要一个16位值发送到DAC而不是32位.将它转换为16位数的最快方法是什么?我可以把它换掉吗?

Pau*_*l R 11

没有必要使用浮点数:

uint16_t val = 0x0fffU * pct / 100U; // convert 0..100 value to 0..4095
Run Code Online (Sandbox Code Playgroud)