从Java ByteBuffer中的byte获取低阶和高阶nybbles

Ton*_*ony 4 java byte bytebuffer mask bit-shift

我需要从存储在ByteBuffer(小端序)中的字节中提取两个整数值

ByteBuffer bb = ByteBuffer.wrap(inputBuffer);
bb.order(ByteOrder.LITTLE_ENDIAN);
Run Code Online (Sandbox Code Playgroud)

我需要从ByteBuffer中的任何字节获取的值是:

length =低阶半字节的整数值

frequency =高阶半字节的整数值

目前我正在使用以下代码提取低阶nybble:

length = bb.getInt(index) & 0xf;
Run Code Online (Sandbox Code Playgroud)

这看起来效果很好.然而,这似乎是高阶nybble我似乎无法正确解释.

我对位移或屏蔽感到有些困惑,我认为我需要执行它,任何建议都会非常有用.

非常感谢!!

Pet*_*rey 8

我需要从一个字节中提取两个整数值

所以你需要得到一个不是int的字节,字节顺序无关紧要.

int lowNibble = bb.get(index) & 0x0f; // the lowest 4 bits
int hiNibble = (bb.get(index) >> 4) & 0x0f; // the highest 4 bits.
Run Code Online (Sandbox Code Playgroud)