org.apache.lucene.facet.encoding

## Class VInt8IntEncoder

- java.lang.Object
- - org.apache.lucene.facet.encoding.IntEncoder
  - - org.apache.lucene.facet.encoding.VInt8IntEncoder

-     public final class VInt8IntEncoder
      extends IntEncoder

  An `IntEncoder` which implements variable length encoding. A number is encoded as follows:
  - If it is less than 127 and non-negative, i.e. uses only 7 bits, it is encoded as a single byte: 0bbbbbbb.
  - If it occupies more than 7 bits, it is represented as a series of bytes, each byte carrying 7 bits. All but the last byte have the MSB set, the last one has it unset.
  Example:
  1. n = 117 = 01110101: This has less than 8 significant bits, therefore is encoded as 01110101 = 0x75.
  2. n = 100000 = (binary) 11000011010100000. This has 17 significant bits, thus needs three Vint8 bytes. Pad it to a multiple of 7 bits, then split it into chunks of 7 and add an MSB, 0 for the last byte, 1 for the others: 1|0000110 1|0001101 0|0100000 = 0x86 0x8D 0x20.
  NOTE: although this encoder is not limited to values ≥ 0, it is not recommended for use with negative values, as their encoding will result in 5 bytes written to the output stream, rather than 4. For such values, either use `SimpleIntEncoder` or write your own version of variable length encoding, which can better handle negative values.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `VInt8IntEncoder()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `IntDecoder` | `createMatchingDecoder()` Returns an `IntDecoder` which can decode the values that were encoded with this encoder.
    `void` | `encode(IntsRef values, BytesRef buf)` Encodes the values to the given buffer.
    `String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### VInt8IntEncoder

          public VInt8IntEncoder()

  - ### Method Detail

    - #### encode

          public void encode(IntsRef values,
                    BytesRef buf)

      Description copied from class: `IntEncoder`
      Encodes the values to the given buffer. Note that the buffer's offset and length are set to 0.
      Specified by:
        `encode` in class `IntEncoder`

    - #### createMatchingDecoder

          public IntDecoder createMatchingDecoder()

      Description copied from class: `IntEncoder`
      Returns an `IntDecoder` which can decode the values that were encoded with this encoder.
      Specified by:
        `createMatchingDecoder` in class `IntEncoder`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.