Class ByteArrayUtil


  • public final class ByteArrayUtil
    extends java.lang.Object
    Class with various utilities for manipulating byte arrays.

    If you find a reusable copy of this in the Java API, please tell me. Using a ByteArrayOutputStream and DataInputStream doesn't seem appropriate.

    C.f. DataOutputStream and ByteArrayOutputStream

    Since:
    0.2
    Author:
    Erich Schubert
    • Constructor Detail

      • ByteArrayUtil

        private ByteArrayUtil()
        Fake constructor.
    • Method Detail

      • writeShort

        public static int writeShort​(byte[] array,
                                     int offset,
                                     int v)
        Write a short to the byte array at the given offset.
        Parameters:
        array - Array to write to
        offset - Offset to write to
        v - data
        Returns:
        number of bytes written
      • writeInt

        public static int writeInt​(byte[] array,
                                   int offset,
                                   int v)
        Write an integer to the byte array at the given offset.
        Parameters:
        array - Array to write to
        offset - Offset to write to
        v - data
        Returns:
        number of bytes written
      • writeLong

        public static int writeLong​(byte[] array,
                                    int offset,
                                    long v)
        Write a long to the byte array at the given offset.
        Parameters:
        array - Array to write to
        offset - Offset to write to
        v - data
        Returns:
        number of bytes written
      • writeFloat

        public static int writeFloat​(byte[] array,
                                     int offset,
                                     float v)
        Write a float to the byte array at the given offset.
        Parameters:
        array - Array to write to
        offset - Offset to write to
        v - data
        Returns:
        number of bytes written
      • writeDouble

        public static int writeDouble​(byte[] array,
                                      int offset,
                                      double v)
        Write a double to the byte array at the given offset.
        Parameters:
        array - Array to write to
        offset - Offset to write to
        v - data
        Returns:
        number of bytes written
      • readShort

        public static short readShort​(byte[] array,
                                      int offset)
        Read a short from the byte array at the given offset.
        Parameters:
        array - Array to read from
        offset - Offset to read at
        Returns:
        (signed) short
      • readUnsignedShort

        public static int readUnsignedShort​(byte[] array,
                                            int offset)
        Read an unsigned short from the byte array at the given offset.
        Parameters:
        array - Array to read from
        offset - Offset to read at
        Returns:
        short
      • readInt

        public static int readInt​(byte[] array,
                                  int offset)
        Read an integer from the byte array at the given offset.
        Parameters:
        array - Array to read from
        offset - Offset to read at
        Returns:
        data
      • readLong

        public static long readLong​(byte[] array,
                                    int offset)
        Read a long from the byte array at the given offset.
        Parameters:
        array - Array to read from
        offset - Offset to read at
        Returns:
        data
      • readFloat

        public static float readFloat​(byte[] array,
                                      int offset)
        Read a float from the byte array at the given offset.
        Parameters:
        array - Array to read from
        offset - Offset to read at
        Returns:
        data
      • readDouble

        public static double readDouble​(byte[] array,
                                        int offset)
        Read a double from the byte array at the given offset.
        Parameters:
        array - Array to read from
        offset - Offset to read at
        Returns:
        data
      • writeSignedVarint

        public static void writeSignedVarint​(java.nio.ByteBuffer buffer,
                                             int val)
        Write an signed integer using a variable-length encoding.

        The sign bit is moved to bit 0.

        Data is always written in 7-bit little-endian, where the 8th bit is the continuation flag.

        Parameters:
        buffer - Buffer to write to
        val - number to write
      • writeSignedVarintLong

        public static void writeSignedVarintLong​(java.nio.ByteBuffer buffer,
                                                 long val)
        Write a signed long using a variable-length encoding.

        The sign bit is moved to bit 0.

        Data is always written in 7-bit little-endian, where the 8th bit is the continuation flag.

        Parameters:
        buffer - Buffer to write to
        val - number to write
      • writeUnsignedVarint

        public static void writeUnsignedVarint​(java.nio.ByteBuffer buffer,
                                               int val)
        Write an unsigned integer using a variable-length encoding.

        Data is always written in 7-bit little-endian, where the 8th bit is the continuation flag.

        Parameters:
        buffer - Buffer to write to
        val - number to write
      • writeUnsignedVarintLong

        public static void writeUnsignedVarintLong​(java.nio.ByteBuffer buffer,
                                                   long val)
        Write an unsigned long using a variable-length encoding.

        Data is always written in 7-bit little-endian, where the 8th bit is the continuation flag.

        Note that for integers, this will result in the same encoding as writeUnsignedVarint(java.nio.ByteBuffer, int)

        Parameters:
        buffer - Buffer to write to
        val - number to write
      • writeString

        public static void writeString​(java.nio.ByteBuffer buffer,
                                       java.lang.String s)
                                throws java.io.IOException
        Write a string to the buffer.

        See ByteArrayUtil.StringSerializer for details.

        Parameters:
        buffer - Buffer to write to
        s - String to write
        Throws:
        java.io.IOException
      • getSignedVarintSize

        public static int getSignedVarintSize​(int val)
        Compute the size of the varint encoding for this signed integer.
        Parameters:
        val - integer to write
        Returns:
        Encoding size of this integer
      • getUnsignedVarintSize

        public static int getUnsignedVarintSize​(int obj)
        Compute the size of the varint encoding for this unsigned integer.
        Parameters:
        obj - integer to write
        Returns:
        Encoding size of this integer
      • getSignedVarintLongSize

        public static int getSignedVarintLongSize​(long val)
        Compute the size of the varint encoding for this signed integer.
        Parameters:
        val - integer to write
        Returns:
        Encoding size of this integer
      • getUnsignedVarintLongSize

        public static int getUnsignedVarintLongSize​(long obj)
        Compute the size of the varint encoding for this unsigned integer.
        Parameters:
        obj - integer to write
        Returns:
        Encoding size of this integer
      • getStringSize

        public static int getStringSize​(java.lang.String s)
                                 throws java.io.IOException
        Compute the size of the string after encoding.
        Parameters:
        s - String to encode
        Returns:
        Byte size
        Throws:
        java.io.IOException
      • readSignedVarint

        public static int readSignedVarint​(java.nio.ByteBuffer buffer)
                                    throws java.io.IOException
        Read a signed integer.
        Parameters:
        buffer - Buffer to read from
        Returns:
        Integer value
        Throws:
        java.io.IOException
      • readUnsignedVarint

        public static int readUnsignedVarint​(java.nio.ByteBuffer buffer)
                                      throws java.io.IOException
        Read an unsigned integer.
        Parameters:
        buffer - Buffer to read from
        Returns:
        Integer value
        Throws:
        java.io.IOException
      • readSignedVarintLong

        public static long readSignedVarintLong​(java.nio.ByteBuffer buffer)
                                         throws java.io.IOException
        Read a signed long.
        Parameters:
        buffer - Buffer to read from
        Returns:
        long value
        Throws:
        java.io.IOException
      • readUnsignedVarintLong

        public static long readUnsignedVarintLong​(java.nio.ByteBuffer buffer)
                                           throws java.io.IOException
        Read an unsigned long.
        Parameters:
        buffer - Buffer to read from
        Returns:
        long value
        Throws:
        java.io.IOException
      • readString

        public static java.lang.String readString​(java.nio.ByteBuffer buffer)
                                           throws java.io.IOException
        Read a string from the buffer.

        Note: this is not 100% symmetric to writeString, as a null value and the empty string are encoded the same way.

        Parameters:
        buffer - Buffer to read from.
        Returns:
        Deserialized string
        Throws:
        java.io.IOException