实际上,我对此不太清楚,因此我在这里提出了一个问题,我也是位计算的新手。我的情况是这样的,我从CAN
(一个硬件设备)获得一些十六进制值,因为一个垂直值我必须读取第4个字节,在第4个字节中,位5和6的值决定要写入的输出,我的意思是这样,第5位和第6位为00 =关闭,01 =开启。所以我的问题是,我们如何才能从十六进制读取第4个或任何特定字节以及特定字节的位。如果可能的话,请给我一些指导或示例或任何教程网站。我用谷歌搜索了很多,但没有用。请帮助我。我希望在Java中完成此操作。
假定该值为32位。
for example assume the input is 0x4FAEBCDB
我假设您要提取4个字节,即DB。
使用0x000000FF进行AND操作只会提取第4个字节。
That is
0x4FAEBCDB & 0x000000FF = 0xDB
同样,您可以通过将该字节与特定位作为一个逻辑“与”来提取各个位。
for 5th bit
0xDB & (1<<5)
for 6th bit
0xDB & (1<<6)
如果要提取第一个字节(4F),则可以
0x4FAEBCDB & (0xFF000000)
FF表示(1111 1111),其余位均为0。因此,按位进行AND操作将在我们指定1s的位置返回字节。
Similarly (1<<5) generates 00010000.
因此,执行“与”运算将返回特定位置的位值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句