C - 从一个字节中获取一点

lua*_*oob 6 c byte bit-manipulation bit

可能重复:
如何从c中的整数值中逐位获取数据?

我有一个8位字节,我想从这个字节得到一点,比如getByte(0b01001100,3)= 1

oua*_*uah 22

Firstoff,0b前缀不是C而是C的GCC扩展.要获得a的第3位的值uint8_t a,可以使用以下表达式:

((a >> 3)  & 0x01)
Run Code Online (Sandbox Code Playgroud)

如果设置了第3位,则将其评估为1;如果未设置第3项,则评估为0.

  • 只是帮助那些可能不太熟悉二进制的人,第3位实际上是右边的第四位数,即1**1**110如果你想从右边获得第三位数,你将右移2,五,四等 (3认同)

cni*_*tar 5

首先,C 0b01...没有二进制常量,尝试使用十六进制常量.第二:

uint8_t byte;
printf("%d\n", byte & (1 << 2);
Run Code Online (Sandbox Code Playgroud)

  • 第三; 一个错误. (4认同)