c - C语言中的 map 数字

标签 c dictionary

我如何映射这样的数字:

1 => 0x01;
2 => 0x03;
3 => 0x07;
4 => 0x0F;
....
8 => 0xFF;

我只有 8 个数字要映射,我的 RT 嵌入式系统需要这个,因此解决方案必须高效。 有没有办法使用 ENUM 或 DEFINE 来实现这一点? 我不想使用 switch 语句。我应该使用数组吗:

BYTE bMap[8] = 
{
    0x01,
    0x03,
    0x07,
    0x0F,
    ....
    0xFF,
}

或者还有其他方法吗? 谢谢你!最大。

最佳答案

两个最明显的解决方案是:

  1. 使用数组。 const uint8_t masks[] = { 1, 3, ... } .
  2. 您的掩码似乎是“应该设置 i + 1 最右边的位”,因此您可以在运行时使用 (1 << (i + 1)) - 1 简单地计算它这更容易实现并且不易出错。

关于c - C语言中的 map 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27980376/

相关文章:

python - 如何遍历嵌套的字典?

arrays - 使用数组和指针的龟兔赛跑

c - 为什么预定义 gtk 函数会出现隐式声明错误?

c - 试图理解彼得森的算法

c - 好友分配器、内存块和 FreeRTOS

python - 通过按 python 中数据帧列的值分组来创建字典

c - 为什么 ioctl 调用的原型(prototype)使用 unsigned long 作为第三个参数?

python - 如何将 CSV 转换为 JSON?

python - 使用python对两个多项式求和的问题

python - 提取字典的子集后如何保持顺序?