BitBufferHelper { public static int getInt(byte[] data, int numBits) { if (numBits > Integer.SIZE) { LOG.error("getInt", new BufferException("Container is too small for the number of requested bits")); } int startOffset = data.length * NetUtils.NUM_BITS_IN_A_BYTE - numBits; byte[] bits = null; try { bits = BitBufferHelper.getBits(data, startOffset, numBits); } catch (BufferException e) { LOG.error("getBits failed", e); return 0; } return (int) toNumber(bits, numBits); } private  BitBufferHelper(); static byte getByte(byte[] data); static short getShort(byte[] data, int numBits); static short getShort(byte[] data); static int getInt(byte[] data, int numBits); static int getInt(byte[] data); static long getLong(byte[] data, int numBits); static long getLong(byte[] data); static byte[] getBits(byte[] data, int startOffset, int numBits); static void setByte(byte[] data, byte input, int startOffset, int numBits); static void setBytes(byte[] data, byte[] input, int startOffset, int numBits); static int getMSBMask(int numBits); static int getLSBMask(int numBits); static long toNumber(byte[] array); static long toNumber(@Nonnull byte[] array, int numBits); static byte[] toByteArray(Number input); static byte[] toByteArray(Number input, int numBits); static byte[] shiftBitsToMSB(byte[] inputBytes, int numBits); static byte[] shiftBitsToLSB(byte[] inputBytes, int numBits); static void insertBits(byte[] data, byte[] inputdataLSB, int startOffset, int numBits); static void checkExceptions(byte[] data, int startOffset, int numBits); static final long BYTE_MASK; }
@Test public void testToIntVarLength() throws Exception { byte[] data = { (byte) 255, (byte) 128 }; int length = 9; Assert.assertTrue(BitBufferHelper.getInt(data, length) == 384); byte[] data2 = { 0, 8 }; Assert.assertTrue(BitBufferHelper.getInt(data2, 9) == 8); byte[] data3 = { 1, 1, 1 }; Assert.assertTrue(BitBufferHelper.getInt(data3) == 65793); byte[] data4 = { 1, 1, 1 }; Assert.assertTrue(BitBufferHelper.getInt(data4) == 65793); byte[] data5 = { 1, 1 }; Assert.assertTrue(BitBufferHelper.getInt(data5) == 257); }