如果这是一个新手问题,请原谅:
我有四个 uint8_t 变量:第一、第二、第三、第四。
我的目标是将它们放在 uint32_t 中,例如 uint32_t 将组成为:
第四第三第二第一,但仅将每个 uint8_t 的前 7 个较低有效位放入 uint32_t,因此用 0 填充 uint32_t 的 4 个最高有效位。
例如,假设:
第一个 = 10000000 -> 我要输入 0000000
第二 = 10011001 -> 我要输入 0011001
第三 = 10101010 -> 我要输入 0101010
第四 = 01111111 -> 我要输入 1111111
uint32_t 最终应该是:
00001111 11101010 10001100 10000000
即:4zerosOfPadding-fourth-third-second-first
如何使用遮罩和移位来做到这一点?
编辑:我尝试的是:
uint32_t target = 0;
uint8_t first = 128, second = 153, third = 170, fourth = 127;
//127 = 0111 1111
target = (first & 127);
target = (target >> 7) | (second & 127);
target = (target >> 14) | (third & 127);
target = (target >> 21) | (fourth & 127);
但我得到的是,我每次都用当前 uint8_t 的 7 个不太重要的位覆盖目标。我不明白如何正确使用变速。感谢大家的帮助。