我有这个简单的代码:
#include <stdio.h>
#include <stdint.h>
int main(void) {
uint16_t i = 0;
unsigned char *b = "Yh";
i = b[1] | (b[0] << 8);
printf("uint16_t: %u\n", i);
return 0;
}
如您所见,我通过按位运算将
Y (HEX: 0x59, DEC: 89)
和 h (HEX: 0x68, DEC: 104)
添加到 uint16_t
中。Y
移动到左侧 8 位,h
被添加到最后。i
的最终内容应该是 89 104
吧?如果我然后打印
i
,我应该期待什么数字出来?我目前正在获取
22888
,但我不确定为什么,也不知道这是否是我应该得到的。 最佳答案
89 现在在高 8 位,所以它是 89*28+104 = 22888。
在十六进制中,它更明显:您取 0x59,将其左移 8 位,得到 0x5900,然后添加 0x68。 0x5968 = 22888。
关于c++ - 使用 uint16_t 和按位运算时预期的数字是多少,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28137506/