我是Java新手。我在Java中有8个字节(或dlc
个字节)的数据,如下所示:
int dlc = 8;
byte[] myData = new byte[dlc];
然后我想从myData
得到值(起始位为50,长度为2位)。
我的想法是将myData
转换为位,然后找到值从位50开始并且长度为2位,然后将位值转换为整数,这种方法好吗?如果它可用,那么如何在java中做到这一点?如果不是,有什么想法从字节数组中选出一部分值?
解决方案: 解决方案由@Zoyd提供
注意:从Android API 19添加了BitSet.valueOf(Bytebuffer)!因此,如果您具有较早的API级别,则无法使用valueOf()方法。您可以查看BitSet to and from integer/long
答案 0 :(得分:1)
试试这个
(myData[6] & 0x60) >> 5
答案 1 :(得分:1)
Xing Fei的anwer很好,但是如果你需要一个通用方法,你可以从你的字节数组中创建一个BitSet:
final BitSet bs = BitSet.valueOf(myData);
然后,您可以编写,例如:
boolean b = bs.get(50);
获取bit 50的值。
答案 2 :(得分:0)
解释邢飞:myData[6]
给出了第49到56位,通过将其与0x60(= 01100000)进行对比,您将第49,52,53,54,55和56位设置为零。如果你将这5位向右移动(>> - 运算符),你就得到了结果。