org.apache.lucene.util

## Class IndexableBinaryStringTools

- java.lang.Object
- - org.apache.lucene.util.IndexableBinaryStringTools

-     public class IndexableBinaryStringTools
      extends java.lang.Object

  Provides support for converting byte sequences to Strings and back again. The resulting Strings preserve the original byte sequences' sort order. The Strings are constructed using a Base 8000h encoding of the original binary data - each char of an encoded String represents a 15-bit chunk from the byte sequence. Base 8000h was chosen because it allows for all lower 15 bits of char to be used without restriction; the surrogate range [U+D8000-U+DFFF] does not represent valid chars, and would require complicated handling to avoid them and allow use of char's high bit. Although unset bits are used as padding in the final char, the original byte sequence could contain trailing bytes with no set bits (null bytes): padding is indistinguishable from valid information. To overcome this problem, a char is appended, indicating the number of encoded bytes in the final content char. This class's operations are defined over CharBuffers and ByteBuffers, to allow for wrapped arrays to be reused, reducing memory allocation costs for repeated operations. Note that this class calls array() and arrayOffset() on the CharBuffers and ByteBuffers it uses, so only wrapped arrays may be used. This class interprets the arrayOffset() and limit() values returned by its input buffers as beginning and end+1 positions on the wrapped array, respectively; similarly, on the output buffer, arrayOffset() is the first position written to, and limit() is set to one past the final output array position.

- - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static java.nio.ByteBuffer` | `decode(java.nio.CharBuffer input)` Decodes the given char sequence, which must have been encoded by `encode(java.nio.ByteBuffer)` or `encode(java.nio.ByteBuffer, java.nio.CharBuffer)`.
    `static void` | `decode(java.nio.CharBuffer input, java.nio.ByteBuffer output)` Decodes the input char sequence into the output byte sequence.
    `static java.nio.CharBuffer` | `encode(java.nio.ByteBuffer input)` Encodes the input byte sequence.
    `static void` | `encode(java.nio.ByteBuffer input, java.nio.CharBuffer output)` Encodes the input byte sequence into the output char sequence.
    `static int` | `getDecodedLength(java.nio.CharBuffer encoded)` Returns the number of bytes required to decode the given char sequence.
    `static int` | `getEncodedLength(java.nio.ByteBuffer original)` Returns the number of chars required to encode the given byte sequence.

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

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

- - ### Method Detail

    - #### getEncodedLength

          public static int getEncodedLength(java.nio.ByteBuffer original)
                                      throws java.lang.IllegalArgumentException

      Returns the number of chars required to encode the given byte sequence.
      Parameters:
        `original` - The byte sequence to be encoded. Must be backed by an array.
      Returns:
        The number of chars required to encode the given byte sequence
      Throws:
        `java.lang.IllegalArgumentException` - If the given ByteBuffer is not backed by an array

    - #### getDecodedLength

          public static int getDecodedLength(java.nio.CharBuffer encoded)
                                      throws java.lang.IllegalArgumentException

      Returns the number of bytes required to decode the given char sequence.
      Parameters:
        `encoded` - The char sequence to be encoded. Must be backed by an array.
      Returns:
        The number of bytes required to decode the given char sequence
      Throws:
        `java.lang.IllegalArgumentException` - If the given CharBuffer is not backed by an array

    - #### encode

          public static void encode(java.nio.ByteBuffer input,
                                    java.nio.CharBuffer output)

      Encodes the input byte sequence into the output char sequence. Before calling this method, ensure that the output CharBuffer has sufficient capacity by calling `getEncodedLength(java.nio.ByteBuffer)`.
      Parameters:
        `input` - The byte sequence to encode
        `output` - Where the char sequence encoding result will go. The limit is set to one past the position of the final char.
      Throws:
        `java.lang.IllegalArgumentException` - If either the input or the output buffer is not backed by an array

    - #### decode

          public static void decode(java.nio.CharBuffer input,
                                    java.nio.ByteBuffer output)

      Decodes the input char sequence into the output byte sequence. Before calling this method, ensure that the output ByteBuffer has sufficient capacity by calling `getDecodedLength(java.nio.CharBuffer)`.
      Parameters:
        `input` - The char sequence to decode
        `output` - Where the byte sequence decoding result will go. The limit is set to one past the position of the final char.
      Throws:
        `java.lang.IllegalArgumentException` - If either the input or the output buffer is not backed by an array

    - #### decode

          public static java.nio.ByteBuffer decode(java.nio.CharBuffer input)

      Decodes the given char sequence, which must have been encoded by `encode(java.nio.ByteBuffer)` or `encode(java.nio.ByteBuffer, java.nio.CharBuffer)`.
      Parameters:
        `input` - The char sequence to decode
      Returns:
        A byte sequence containing the decoding result. The limit is set to one past the position of the final char.
      Throws:
        `java.lang.IllegalArgumentException` - If the input buffer is not backed by an array

    - #### encode

          public static java.nio.CharBuffer encode(java.nio.ByteBuffer input)

      Encodes the input byte sequence.
      Parameters:
        `input` - The byte sequence to encode
      Returns:
        A char sequence containing the encoding result. The limit is set to one past the position of the final char.
      Throws:
        `java.lang.IllegalArgumentException` - If the input buffer is not backed by an array

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