Class ZigZagEncoding

java.lang.Object
org.HdrHistogram.ZigZagEncoding

class ZigZagEncoding extends 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 number 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
     
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) static int
    Read an LEB128-64b9B ZigZag encoded int value from the given buffer
    (package private) static long
    Read an LEB128-64b9B ZigZag encoded long value from the given buffer
    (package private) static void
    putInt(ByteBuffer buffer, int value)
    Writes an int value to the given buffer in LEB128-64b9B ZigZag encoded format
    (package private) static void
    putLong(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 Details

    • ZigZagEncoding

      ZigZagEncoding()
  • Method Details

    • putLong

      static void putLong(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(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(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(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