我需要从存储在ByteBuffer(小端序)中的字节中提取两个整数值
ByteBuffer bb = ByteBuffer.wrap(inputBuffer);
bb.order(ByteOrder.LITTLE_ENDIAN);
我需要从ByteBuffer中的任何字节获取的值是:
长度=低阶半字节的整数值
频率=高阶半字节的整数值
目前我正在使用以下代码提取低阶nybble:
length = bb.getInt(index) & 0xf;
这似乎非常有效。然而,这似乎是高阶的nybble,我似乎无法正确解释。
我对位移或屏蔽感到有些困惑,我认为我需要执行它,任何建议都会非常有帮助。
非常感谢!!
答案 0 :(得分:8)
我需要从一个字节中提取两个整数值
所以你需要得到一个不是int的字节,字节顺序无关紧要。
int lowNibble = bb.get(index) & 0x0f; // the lowest 4 bits
int hiNibble = (bb.get(index) >> 4) & 0x0f; // the highest 4 bits.
答案 1 :(得分:1)
要获得高阶半字节,您需要做的就是位移;低阶位将会下降。
int val = 0xAB;
int lo = val & 0xF;
int hi = val >> 4;
System.out.println("hi is " + Integer.toString(hi, 16));
System.out.println("lo is " + Integer.toString(lo, 16));