Package org.apache.lucene.util.encoding
Class VInt8IntEncoder
- java.lang.Object
-
- org.apache.lucene.util.encoding.IntEncoder
-
- org.apache.lucene.util.encoding.VInt8IntEncoder
-
public class VInt8IntEncoder extends IntEncoder
AnIntEncoder
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.
- n = 117 = 01110101: This has less than 8 significant bits, therefore is encoded as 01110101 = 0x75.
- 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.
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.
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.util.encoding.IntEncoder
out
-
-
Constructor Summary
Constructors Constructor Description VInt8IntEncoder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description IntDecoder
createMatchingDecoder()
Returns anIntDecoder
which matches this encoder.void
encode(int value)
Encodes an integer to the output stream given inreInit
String
toString()
-
Methods inherited from class org.apache.lucene.util.encoding.IntEncoder
close, reInit
-
-
-
-
Method Detail
-
encode
public void encode(int value) throws IOException
Description copied from class:IntEncoder
Encodes an integer to the output stream given inreInit
- Specified by:
encode
in classIntEncoder
- Throws:
IOException
-
createMatchingDecoder
public IntDecoder createMatchingDecoder()
Description copied from class:IntEncoder
Returns anIntDecoder
which matches this encoder. Every encoder must return anIntDecoder
andnull
is not a valid value. If an encoder is just a filter, it should at least return its wrapped encoder's matching decoder.NOTE: this method should create a new instance of the matching decoder and leave the instance sharing to the caller. Returning the same instance over and over is risky because encoders and decoders are not thread safe.
- Specified by:
createMatchingDecoder
in classIntEncoder
-
-