org.eclipse.rdf4j.rio.hdt

## Class VByte

- java.lang.Object
- - org.eclipse.rdf4j.rio.hdt.VByte

-     public class VByte
      extends 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`.
  Author:
    Bart.Hanssens
  See Also:
    Variable byte codes

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `VByte()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static long` | `decode(byte[] bytes, int len)` Decode a series of encoded bytes, with a maximum of 8 bytes
    `static long` | `decode(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(InputStream is)
                             throws IOException

      Decode a maximum of 8 bytes from the input stream.
      Parameters:
        `is` - input stream
      Returns:
        decode value
      Throws:
        `IOException`

    - #### decodeFrom

          public static long decodeFrom(byte[] b,
                                        int start)
                                 throws IOException

      Decode a maximum of 8 bytes from a byte array.
      Parameters:
        `b` - byte array
        `start` - starting position
      Returns:
        decode value
      Throws:
        `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

Copyright © 2015-2021 Eclipse Foundation. All Rights Reserved.