Class VByte


  • public class VByte
    extends java.lang.Object
    Variable byte encoding for numbers.

    A variable number of bytes is used to encode (unsigned) numeric values, the first bit (MSB) of each byte indicates if there are more bytes to read, the other 7 bits are used to encode the value.

    In this implementation, the MSB is set to 1 if this byte is the last one.

    E.g: 10000001 is value 1, 00000001 10000001 is 128 (decimal). Note that the value is stored little-endian, so in this example 10000001 00000001.

    See Also:
    Variable byte codes
    • Constructor Summary

      Constructors 
      Constructor Description
      VByte()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static long decode​(byte[] bytes, int len)
      Decode a series of encoded bytes, with a maximum of 8 bytes
      static long decode​(java.io.InputStream is)
      Decode a maximum of 8 bytes from the input stream.
      static long decodeFrom​(byte[] b, int start)
      Decode a maximum of 8 bytes from a byte array.
      static int encodedLength​(long value)
      Calculate the number of bytes needed for encoding a value
      static boolean hasNext​(byte b)
      Checks if the most significant bit is set.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • VByte

        public VByte()
    • Method Detail

      • hasNext

        public static boolean hasNext​(byte b)
        Checks if the most significant bit is set. If this bit is zero, then the next byte must also be read to decode the number.
        Parameters:
        b -
        Returns:
        true if there is a next byte
      • decode

        public static long decode​(byte[] bytes,
                                  int len)
        Decode a series of encoded bytes, with a maximum of 8 bytes
        Parameters:
        bytes - byte array
        len - number of bytes to decode
        Returns:
        long value
      • decode

        public static long decode​(java.io.InputStream is)
                           throws java.io.IOException
        Decode a maximum of 8 bytes from the input stream.
        Parameters:
        is - input stream
        Returns:
        decode value
        Throws:
        java.io.IOException
      • decodeFrom

        public static long decodeFrom​(byte[] b,
                                      int start)
                               throws java.io.IOException
        Decode a maximum of 8 bytes from a byte array.
        Parameters:
        b - byte array
        start - starting position
        Returns:
        decode value
        Throws:
        java.io.IOException
      • encodedLength

        public static int encodedLength​(long value)
        Calculate the number of bytes needed for encoding a value
        Parameters:
        value - numeric value
        Returns:
        number of bytes