Class ByteArrayUtil
- java.lang.Object
-
- elki.utilities.io.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
andDataInputStream
doesn't seem appropriate.C.f.
DataOutputStream
andByteArrayOutputStream
- Since:
- 0.2
- Author:
- Erich Schubert
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ByteArrayUtil.ByteSerializer
Serializer for byte objects.static class
ByteArrayUtil.DoubleSerializer
Serializer for double objects.static class
ByteArrayUtil.FloatSerializer
Serializer for float objects.static class
ByteArrayUtil.IntegerSerializer
Serializer for integer objects.static class
ByteArrayUtil.LongSerializer
Serializer for long objects.static class
ByteArrayUtil.ShortSerializer
Serializer for short objects.static class
ByteArrayUtil.StringSerializer
Serializer for String objects.static class
ByteArrayUtil.VarintSerializer
Serializer for Integer objects using a variable size encoding.
-
Field Summary
Fields Modifier and Type Field Description static ByteArrayUtil.ByteSerializer
BYTE_SERIALIZER
Static instance.static ByteArrayUtil.DoubleSerializer
DOUBLE_SERIALIZER
Static instance.static ByteArrayUtil.FloatSerializer
FLOAT_SERIALIZER
Static instance.static ByteArrayUtil.IntegerSerializer
INT_SERIALIZER
Static instance.static ByteArrayUtil.LongSerializer
LONG_SERIALIZER
Static instance.static ByteArrayUtil.ShortSerializer
SHORT_SERIALIZER
Static instance.static int
SIZE_BYTE
Size of a byte in bytes.static int
SIZE_DOUBLE
Size of a double in bytes.static int
SIZE_FLOAT
Size of a float in bytes.static int
SIZE_INT
Size of an integer in bytes.static int
SIZE_LONG
Size of a long in bytes.static int
SIZE_SHORT
Size of a short in bytes.static ByteArrayUtil.StringSerializer
STRING_SERIALIZER
Static instance.static ByteArrayUtil.VarintSerializer
VARINT_SERIALIZER
Static instance.
-
Constructor Summary
Constructors Modifier Constructor Description private
ByteArrayUtil()
Fake constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static int
getSignedVarintLongSize(long val)
Compute the size of the varint encoding for this signed integer.static int
getSignedVarintSize(int val)
Compute the size of the varint encoding for this signed integer.static int
getStringSize(java.lang.String s)
Compute the size of the string after encoding.static int
getUnsignedVarintLongSize(long obj)
Compute the size of the varint encoding for this unsigned integer.static int
getUnsignedVarintSize(int obj)
Compute the size of the varint encoding for this unsigned integer.static double
readDouble(byte[] array, int offset)
Read a double from the byte array at the given offset.static float
readFloat(byte[] array, int offset)
Read a float from the byte array at the given offset.static int
readInt(byte[] array, int offset)
Read an integer from the byte array at the given offset.static long
readLong(byte[] array, int offset)
Read a long from the byte array at the given offset.static short
readShort(byte[] array, int offset)
Read a short from the byte array at the given offset.static int
readSignedVarint(java.nio.ByteBuffer buffer)
Read a signed integer.static long
readSignedVarintLong(java.nio.ByteBuffer buffer)
Read a signed long.static java.lang.String
readString(java.nio.ByteBuffer buffer)
Read a string from the buffer.static int
readUnsignedShort(byte[] array, int offset)
Read an unsigned short from the byte array at the given offset.static int
readUnsignedVarint(java.nio.ByteBuffer buffer)
Read an unsigned integer.static long
readUnsignedVarintLong(java.nio.ByteBuffer buffer)
Read an unsigned long.static int
writeDouble(byte[] array, int offset, double v)
Write a double to the byte array at the given offset.static int
writeFloat(byte[] array, int offset, float v)
Write a float to the byte array at the given offset.static int
writeInt(byte[] array, int offset, int v)
Write an integer to the byte array at the given offset.static int
writeLong(byte[] array, int offset, long v)
Write a long to the byte array at the given offset.static int
writeShort(byte[] array, int offset, int v)
Write a short to the byte array at the given offset.static void
writeSignedVarint(java.nio.ByteBuffer buffer, int val)
Write an signed integer using a variable-length encoding.static void
writeSignedVarintLong(java.nio.ByteBuffer buffer, long val)
Write a signed long using a variable-length encoding.static void
writeString(java.nio.ByteBuffer buffer, java.lang.String s)
Write a string to the buffer.static void
writeUnsignedVarint(java.nio.ByteBuffer buffer, int val)
Write an unsigned integer using a variable-length encoding.static void
writeUnsignedVarintLong(java.nio.ByteBuffer buffer, long val)
Write an unsigned long using a variable-length encoding.
-
-
-
Field Detail
-
SIZE_BYTE
public static final int SIZE_BYTE
Size of a byte in bytes.- See Also:
- Constant Field Values
-
SIZE_SHORT
public static final int SIZE_SHORT
Size of a short in bytes.- See Also:
- Constant Field Values
-
SIZE_INT
public static final int SIZE_INT
Size of an integer in bytes.- See Also:
- Constant Field Values
-
SIZE_LONG
public static final int SIZE_LONG
Size of a long in bytes.- See Also:
- Constant Field Values
-
SIZE_FLOAT
public static final int SIZE_FLOAT
Size of a float in bytes.- See Also:
- Constant Field Values
-
SIZE_DOUBLE
public static final int SIZE_DOUBLE
Size of a double in bytes.- See Also:
- Constant Field Values
-
BYTE_SERIALIZER
public static final ByteArrayUtil.ByteSerializer BYTE_SERIALIZER
Static instance.
-
SHORT_SERIALIZER
public static final ByteArrayUtil.ShortSerializer SHORT_SERIALIZER
Static instance.
-
INT_SERIALIZER
public static final ByteArrayUtil.IntegerSerializer INT_SERIALIZER
Static instance.
-
LONG_SERIALIZER
public static final ByteArrayUtil.LongSerializer LONG_SERIALIZER
Static instance.
-
FLOAT_SERIALIZER
public static final ByteArrayUtil.FloatSerializer FLOAT_SERIALIZER
Static instance.
-
DOUBLE_SERIALIZER
public static final ByteArrayUtil.DoubleSerializer DOUBLE_SERIALIZER
Static instance.
-
STRING_SERIALIZER
public static final ByteArrayUtil.StringSerializer STRING_SERIALIZER
Static instance.
-
VARINT_SERIALIZER
public static final ByteArrayUtil.VarintSerializer VARINT_SERIALIZER
Static instance.
-
-
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 tooffset
- Offset to write tov
- 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 tooffset
- Offset to write tov
- 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 tooffset
- Offset to write tov
- 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 tooffset
- Offset to write tov
- 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 tooffset
- Offset to write tov
- 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 fromoffset
- 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 fromoffset
- 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 fromoffset
- 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 fromoffset
- 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 fromoffset
- 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 fromoffset
- 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 toval
- 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 toval
- 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 toval
- 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 toval
- 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 tos
- 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
-
-