我试图了解如何使用Bitwise AND提取单个字节的值。
我所拥有的是一个4字节数组,并将最后2个字节转换为单个2字节值。然后我试图从该2字节值中提取原始单字节值。有关我的代码和值的屏幕截图,请参阅附件。
我遇到的问题是我无法获得2字节值中最后一个字节的值。
我如何使用Bitwise AND进行此操作?
感谢您的帮助,
理查德休斯
答案 0 :(得分:5)
我遇到的问题是我无法获得2字节值中最后一个字节的值。
您的2byte整数由值3和4组成(因为您的指针指向a[1]
)。正如您在测试中看到的那样,您可以通过应用掩码3
来获取0xFF
。现在,要获得4
,您需要移除较低位和来移动值。在您的示例中,通过使用掩码0xFF00
,您可以有效地从16位数中删除3
,但是将4
保留在2字节数的高字节中,这是值{ {1}} - 第11位设置,这是第二个字节中的第三位(从最不具代表性的位数开始计算)
您可以将结果向右移动8位以获得1024 == 2^10
,否则您可以完全忽略该掩码,因为只需向右移动,最低位将消失 :
4
更有趣的结果是按位测试,可以通过使用单个数字来获得:
4 == ( x>>8 )
答案 1 :(得分:3)
您需要添加一些位移以将屏蔽值从高字节转换为低字节。
答案 2 :(得分:0)
我遇到的问题是我无法获得最后一个的价值 2字节值中的字节。
不确定“监视”表的来源或是否涉及更多代码,但我认为结果是正确的。记住,其中一个是高字节,因此值被移位<< 8个地方。在小端机器上,高字节将是第二个。