我如何映射这样的数字:
1 => 0x01;
2 => 0x03;
3 => 0x07;
4 => 0x0F;
....
8 => 0xFF;
我只有 8 个数字要映射,我的 RT 嵌入式系统需要这个,因此解决方案必须高效。 有没有办法使用 ENUM 或 DEFINE 来实现这一点? 我不想使用 switch 语句。我应该使用数组吗:
BYTE bMap[8] =
{
0x01,
0x03,
0x07,
0x0F,
....
0xFF,
}
或者还有其他方法吗? 谢谢你!最大。
最佳答案
两个最明显的解决方案是:
- 使用数组。
const uint8_t masks[] = { 1, 3, ... }
. - 您的掩码似乎是“应该设置
i + 1
最右边的位”,因此您可以在运行时使用(1 << (i + 1)) - 1
简单地计算它这更容易实现并且不易出错。
关于c - C语言中的 map 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27980376/