Class ZigZagEncoding


  • class ZigZagEncoding
    extends java.lang.Object
    This class provides encoding and decoding methods for writing and reading ZigZag-encoded LEB128-64b9B-variant (Little Endian Base 128) values to/from a ByteBuffer. LEB128's variable length encoding provides for using a smaller nuber of bytes for smaller values, and the use of ZigZag encoding allows small (closer to zero) negative values to use fewer bytes. Details on both LEB128 and ZigZag can be readily found elsewhere. The LEB128-64b9B-variant encoding used here diverges from the "original" LEB128 as it extends to 64 bit values: In the original LEB128, a 64 bit value can take up to 10 bytes in the stream, where this variant's encoding of a 64 bit values will max out at 9 bytes. As such, this encoder/decoder should NOT be used for encoding or decoding "standard" LEB128 formats (e.g. Google Protocol Buffers).
    • Constructor Summary

      Constructors 
      Constructor Description
      ZigZagEncoding()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) static int getInt​(java.nio.ByteBuffer buffer)
      Read an LEB128-64b9B ZigZag encoded int value from the given buffer
      (package private) static long getLong​(java.nio.ByteBuffer buffer)
      Read an LEB128-64b9B ZigZag encoded long value from the given buffer
      (package private) static void putInt​(java.nio.ByteBuffer buffer, int value)
      Writes an int value to the given buffer in LEB128-64b9B ZigZag encoded format
      (package private) static void putLong​(java.nio.ByteBuffer buffer, long value)
      Writes a long value to the given buffer in LEB128 ZigZag encoded format
      • Methods inherited from class java.lang.Object

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

      • ZigZagEncoding

        ZigZagEncoding()
    • Method Detail

      • putLong

        static void putLong​(java.nio.ByteBuffer buffer,
                            long value)
        Writes a long value to the given buffer in LEB128 ZigZag encoded format
        Parameters:
        buffer - the buffer to write to
        value - the value to write to the buffer
      • putInt

        static void putInt​(java.nio.ByteBuffer buffer,
                           int value)
        Writes an int value to the given buffer in LEB128-64b9B ZigZag encoded format
        Parameters:
        buffer - the buffer to write to
        value - the value to write to the buffer
      • getLong

        static long getLong​(java.nio.ByteBuffer buffer)
        Read an LEB128-64b9B ZigZag encoded long value from the given buffer
        Parameters:
        buffer - the buffer to read from
        Returns:
        the value read from the buffer
      • getInt

        static int getInt​(java.nio.ByteBuffer buffer)
        Read an LEB128-64b9B ZigZag encoded int value from the given buffer
        Parameters:
        buffer - the buffer to read from
        Returns:
        the value read from the buffer