Class BitSource


  • public final class BitSource
    extends java.lang.Object

    This provides an easy abstraction to read bits at a time from a sequence of bytes, where the number of bits read is not often a multiple of 8.

    This class is thread-safe but not reentrant -- unless the caller modifies the bytes array it passed in, in which case all bets are off.

    • Constructor Detail

      • BitSource

        public BitSource​(byte[] bytes)
        Parameters:
        bytes - bytes from which this will read bits. Bits will be read from the first byte first. Bits are read within a byte from most-significant to least-significant bit.
    • Method Detail

      • getBitOffset

        public int getBitOffset()
        Returns:
        index of next bit in current byte which would be read by the next call to readBits(int).
      • getByteOffset

        public int getByteOffset()
        Returns:
        index of next byte in input byte array which would be read by the next call to readBits(int).
      • readBits

        public int readBits​(int numBits)
        Parameters:
        numBits - number of bits to read
        Returns:
        int representing the bits read. The bits will appear as the least-significant bits of the int
        Throws:
        java.lang.IllegalArgumentException - if numBits isn't in [1,32] or more than is available
      • available

        public int available()
        Returns:
        number of bits that can be read successfully