我正在尝试使用位操作创建一个字符(8 位),一次hex
一个。我正在运行的机器是小端的。
所以无论如何,例如:
char buff;
buff = 0x54; // ('T')
printf(" %c \n", buff ); // prints T
buff |= 0x54; // Produces the same result.
buff |= 0x50 | 0x04; // Produces the same result.
0x5
但是我应该能够使用和移位来创建上述内容0x4
。
我试过了
buff = ((buff << 4) | 0x4) | (buff | 0x5);
及其变体,但没有进展。我觉得我错过了一些简单的东西。
编辑:解决。
谢谢大家。我从来不知道你可以在不告诉它要改变什么的情况下改变*?
- 可能对“buff = 0x5 << 4 | 0x4”没有完全理解如果我正确解释它,它会向左移动 4,并设置 0x5,然后 OR 与 4?** 没关系。下面的迈克彻底解释了它的作用。非常感谢大家。