com.healthmarketscience.jackcess.impl
Class ByteUtil

java.lang.Object
  extended by com.healthmarketscience.jackcess.impl.ByteUtil

public final class ByteUtil
extends Object

Byte manipulation and display utilities

Author:
Tim McCune

Nested Class Summary
static class ByteUtil.ByteStream
          Utility byte stream similar to ByteArrayOutputStream but with extended accessibility to the bytes.
 
Method Summary
static int asUnsignedByte(byte b)
           
static int asUnsignedShort(short s)
           
static void clearRange(ByteBuffer buffer, int start, int end)
          Sets all bits in the given byte range to 0.
static void clearRemaining(ByteBuffer buffer)
          Sets all bits in the given remaining byte range to 0.
static void closeQuietly(Closeable c)
          Closes the given Closeable if non-null, swallows any IOExceptions.
static byte[] concat(byte[] b1, byte[] b2)
          Concatenates and returns the given byte arrays.
static void copy(InputStream in, OutputStream out)
          Copies the given InputStream to the given OutputStream.
static byte[] copyOf(byte[] arr, int newLength)
          Returns a copy of the given array of the given length.
static byte[] copyOf(byte[] arr, int offset, int newLength)
          Returns a copy of the given array of the given length starting at the given position.
static byte[] copyOf(byte[] arr, int offset, int newLength, int dstOffset)
          Returns a copy of the given array of the given length starting at the given position.
static void fillRange(ByteBuffer buffer, int start, int end)
          Sets all bits in the given byte range to 1.
static int findRange(ByteBuffer buffer, int start, byte[] pattern)
          Searches for a pattern of bytes in the given buffer starting at the given offset.
static int forward(ByteBuffer buffer, int count)
          Moves the position of the given buffer the given count from the current position.
static int get3ByteInt(ByteBuffer buffer)
          Read a 3 byte int from a buffer
static int get3ByteInt(ByteBuffer buffer, ByteOrder order)
          Read a 3 byte int from a buffer
static int get3ByteInt(ByteBuffer buffer, int offset)
          Read a 3 byte int from a buffer
static int get3ByteInt(ByteBuffer buffer, int offset, ByteOrder order)
          Read a 3 byte int from a buffer
static byte[] getBytes(ByteBuffer buffer, int len)
          Reads an array of bytes from the given buffer
static byte[] getBytes(ByteBuffer buffer, int offset, int len)
          Reads an array of bytes from the given buffer at the given offset
static int getInt(ByteBuffer buffer, ByteOrder order)
           
static int getInt(ByteBuffer buffer, int offset, ByteOrder order)
           
static int getUnsignedByte(ByteBuffer buffer)
          Read an unsigned byte from a buffer
static int getUnsignedByte(ByteBuffer buffer, int offset)
          Read an unsigned byte from a buffer
static int getUnsignedShort(ByteBuffer buffer)
          Read an unsigned short from a buffer
static int getUnsignedShort(ByteBuffer buffer, int offset)
          Read an unsigned short from a buffer
static int getUnsignedVarInt(ByteBuffer buffer, int numBytes)
          Read an unsigned variable length int from a buffer
static int getUnsignedVarInt(ByteBuffer buffer, int offset, int numBytes)
          Read an unsigned variable length int from a buffer
static void insertEmptyData(ByteBuffer buffer, int len)
          Inserts empty data of the given length at the current position of the given buffer (moving existing data forward the given length).
static boolean matchesRange(ByteBuffer buffer, int start, byte[] pattern)
          Matches a pattern of bytes against the given buffer starting at the given offset.
static void put3ByteInt(ByteBuffer buffer, int val)
          Put an integer into the given buffer at the given offset as a 3-byte integer.
static void put3ByteInt(ByteBuffer buffer, int val, ByteOrder order)
          Put an integer into the given buffer at the given offset as a 3-byte integer.
static void put3ByteInt(ByteBuffer buffer, int val, int offset, ByteOrder order)
          Put an integer into the given buffer at the given offset as a 3-byte integer.
static void putInt(ByteBuffer buffer, int val, ByteOrder order)
          Writes an int at the current position in the given buffer, using the given ByteOrder
static void putInt(ByteBuffer buffer, int val, int offset, ByteOrder order)
          Writes an int at the given position in the given buffer, using the given ByteOrder
static void putRange(ByteBuffer buffer, int start, int end, byte b)
          Sets all bytes in the given byte range to the given byte value.
static void swap2Bytes(byte[] bytes, int offset)
          Swaps the 2 bytes (changes endianness) of the bytes at the given offset.
static void swap4Bytes(byte[] bytes, int offset)
          Swaps the 4 bytes (changes endianness) of the bytes at the given offset.
static void swap8Bytes(byte[] bytes, int offset)
          Swaps the 8 bytes (changes endianness) of the bytes at the given offset.
static void toHexFile(String fileName, ByteBuffer buffer, int offset, int size)
          Writes a chunk of data to a file in pretty printed hexidecimal.
static String toHexString(byte[] array)
          Convert a byte array to a hexadecimal string for display
static String toHexString(ByteBuffer buffer, int size)
          Convert a byte buffer to a hexadecimal string for display
static String toHexString(ByteBuffer buffer, int offset, int size)
          Convert a byte buffer to a hexadecimal string for display
static String toHexString(ByteBuffer buffer, int offset, int size, boolean formatted)
          Convert a byte buffer to a hexadecimal string for display
static String toHexString(DatabaseImpl db, int pageNumber, int size)
          Convert the given number of bytes from the given database page to a hexidecimal string for display.
static void writeHexString(ByteBuffer buffer, String hexStr)
          Writes a sequence of hexidecimal values into the given buffer, where every two characters represent one byte value.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

put3ByteInt

public static void put3ByteInt(ByteBuffer buffer,
                               int val)
Put an integer into the given buffer at the given offset as a 3-byte integer.

Parameters:
buffer - buffer into which to insert the int
val - Int to convert

put3ByteInt

public static void put3ByteInt(ByteBuffer buffer,
                               int val,
                               ByteOrder order)
Put an integer into the given buffer at the given offset as a 3-byte integer.

Parameters:
buffer - buffer into which to insert the int
val - Int to convert
order - the order to insert the bytes of the int

put3ByteInt

public static void put3ByteInt(ByteBuffer buffer,
                               int val,
                               int offset,
                               ByteOrder order)
Put an integer into the given buffer at the given offset as a 3-byte integer.

Parameters:
buffer - buffer into which to insert the int
val - Int to convert
offset - offset at which to insert the int
order - the order to insert the bytes of the int

get3ByteInt

public static int get3ByteInt(ByteBuffer buffer)
Read a 3 byte int from a buffer

Parameters:
buffer - Buffer containing the bytes
Returns:
The int

get3ByteInt

public static int get3ByteInt(ByteBuffer buffer,
                              ByteOrder order)
Read a 3 byte int from a buffer

Parameters:
buffer - Buffer containing the bytes
order - the order of the bytes of the int
Returns:
The int

get3ByteInt

public static int get3ByteInt(ByteBuffer buffer,
                              int offset)
Read a 3 byte int from a buffer

Parameters:
buffer - Buffer containing the bytes
offset - Offset at which to start reading the int
Returns:
The int

get3ByteInt

public static int get3ByteInt(ByteBuffer buffer,
                              int offset,
                              ByteOrder order)
Read a 3 byte int from a buffer

Parameters:
buffer - Buffer containing the bytes
offset - Offset at which to start reading the int
order - the order of the bytes of the int
Returns:
The int

getUnsignedByte

public static int getUnsignedByte(ByteBuffer buffer)
Read an unsigned byte from a buffer

Parameters:
buffer - Buffer containing the bytes
Returns:
The unsigned byte as an int

getUnsignedByte

public static int getUnsignedByte(ByteBuffer buffer,
                                  int offset)
Read an unsigned byte from a buffer

Parameters:
buffer - Buffer containing the bytes
offset - Offset at which to read the byte
Returns:
The unsigned byte as an int

getUnsignedShort

public static int getUnsignedShort(ByteBuffer buffer)
Read an unsigned short from a buffer

Parameters:
buffer - Buffer containing the short
Returns:
The unsigned short as an int

getUnsignedShort

public static int getUnsignedShort(ByteBuffer buffer,
                                   int offset)
Read an unsigned short from a buffer

Parameters:
buffer - Buffer containing the short
offset - Offset at which to read the short
Returns:
The unsigned short as an int

getInt

public static int getInt(ByteBuffer buffer,
                         ByteOrder order)
Parameters:
buffer - Buffer containing the bytes
order - the order of the bytes of the int
Returns:
an int from the current position in the given buffer, read using the given ByteOrder

getInt

public static int getInt(ByteBuffer buffer,
                         int offset,
                         ByteOrder order)
Parameters:
buffer - Buffer containing the bytes
offset - Offset at which to start reading the int
order - the order of the bytes of the int
Returns:
an int from the given position in the given buffer, read using the given ByteOrder

putInt

public static void putInt(ByteBuffer buffer,
                          int val,
                          ByteOrder order)
Writes an int at the current position in the given buffer, using the given ByteOrder

Parameters:
buffer - buffer into which to insert the int
val - Int to insert
order - the order to insert the bytes of the int

putInt

public static void putInt(ByteBuffer buffer,
                          int val,
                          int offset,
                          ByteOrder order)
Writes an int at the given position in the given buffer, using the given ByteOrder

Parameters:
buffer - buffer into which to insert the int
val - Int to insert
offset - offset at which to insert the int
order - the order to insert the bytes of the int

getUnsignedVarInt

public static int getUnsignedVarInt(ByteBuffer buffer,
                                    int numBytes)
Read an unsigned variable length int from a buffer

Parameters:
buffer - Buffer containing the variable length int
Returns:
The unsigned int

getUnsignedVarInt

public static int getUnsignedVarInt(ByteBuffer buffer,
                                    int offset,
                                    int numBytes)
Read an unsigned variable length int from a buffer

Parameters:
buffer - Buffer containing the variable length int
offset - Offset at which to read the value
Returns:
The unsigned int

getBytes

public static byte[] getBytes(ByteBuffer buffer,
                              int len)
Reads an array of bytes from the given buffer

Parameters:
buffer - Buffer containing the desired bytes
len - length of the desired bytes
Returns:
a new buffer with the given number of bytes from the current position in the given buffer

getBytes

public static byte[] getBytes(ByteBuffer buffer,
                              int offset,
                              int len)
Reads an array of bytes from the given buffer at the given offset

Parameters:
buffer - Buffer containing the desired bytes
offset - Offset at which to read the bytes
len - length of the desired bytes
Returns:
a new buffer with the given number of bytes from the given position in the given buffer

concat

public static byte[] concat(byte[] b1,
                            byte[] b2)
Concatenates and returns the given byte arrays.


clearRemaining

public static void clearRemaining(ByteBuffer buffer)
Sets all bits in the given remaining byte range to 0.


clearRange

public static void clearRange(ByteBuffer buffer,
                              int start,
                              int end)
Sets all bits in the given byte range to 0.


fillRange

public static void fillRange(ByteBuffer buffer,
                             int start,
                             int end)
Sets all bits in the given byte range to 1.


putRange

public static void putRange(ByteBuffer buffer,
                            int start,
                            int end,
                            byte b)
Sets all bytes in the given byte range to the given byte value.


matchesRange

public static boolean matchesRange(ByteBuffer buffer,
                                   int start,
                                   byte[] pattern)
Matches a pattern of bytes against the given buffer starting at the given offset.


findRange

public static int findRange(ByteBuffer buffer,
                            int start,
                            byte[] pattern)
Searches for a pattern of bytes in the given buffer starting at the given offset.

Returns:
the offset of the pattern if a match is found, -1 otherwise

insertEmptyData

public static void insertEmptyData(ByteBuffer buffer,
                                   int len)
Inserts empty data of the given length at the current position of the given buffer (moving existing data forward the given length). The limit of the buffer is adjusted by the given length. The buffer is expecting to have the required capacity available.


toHexString

public static String toHexString(ByteBuffer buffer,
                                 int size)
Convert a byte buffer to a hexadecimal string for display

Parameters:
buffer - Buffer to display, starting at offset 0
size - Number of bytes to read from the buffer
Returns:
The display String

toHexString

public static String toHexString(byte[] array)
Convert a byte array to a hexadecimal string for display

Parameters:
array - byte array to display, starting at offset 0
Returns:
The display String

toHexString

public static String toHexString(ByteBuffer buffer,
                                 int offset,
                                 int size)
Convert a byte buffer to a hexadecimal string for display

Parameters:
buffer - Buffer to display, starting at offset 0
offset - Offset at which to start reading the buffer
size - Number of bytes to read from the buffer
Returns:
The display String

toHexString

public static String toHexString(ByteBuffer buffer,
                                 int offset,
                                 int size,
                                 boolean formatted)
Convert a byte buffer to a hexadecimal string for display

Parameters:
buffer - Buffer to display, starting at offset 0
offset - Offset at which to start reading the buffer
size - Number of bytes to read from the buffer
formatted - flag indicating if formatting is required
Returns:
The display String

toHexString

public static String toHexString(DatabaseImpl db,
                                 int pageNumber,
                                 int size)
                          throws IOException
Convert the given number of bytes from the given database page to a hexidecimal string for display.

Throws:
IOException

writeHexString

public static void writeHexString(ByteBuffer buffer,
                                  String hexStr)
                           throws IOException
Writes a sequence of hexidecimal values into the given buffer, where every two characters represent one byte value.

Throws:
IOException

toHexFile

public static void toHexFile(String fileName,
                             ByteBuffer buffer,
                             int offset,
                             int size)
                      throws IOException
Writes a chunk of data to a file in pretty printed hexidecimal.

Throws:
IOException

asUnsignedByte

public static int asUnsignedByte(byte b)
Returns:
the byte value converted to an unsigned int value

asUnsignedShort

public static int asUnsignedShort(short s)
Returns:
the short value converted to an unsigned int value

swap8Bytes

public static void swap8Bytes(byte[] bytes,
                              int offset)
Swaps the 8 bytes (changes endianness) of the bytes at the given offset.

Parameters:
bytes - buffer containing bytes to swap
offset - offset of the first byte of the bytes to swap

swap4Bytes

public static void swap4Bytes(byte[] bytes,
                              int offset)
Swaps the 4 bytes (changes endianness) of the bytes at the given offset.

Parameters:
bytes - buffer containing bytes to swap
offset - offset of the first byte of the bytes to swap

swap2Bytes

public static void swap2Bytes(byte[] bytes,
                              int offset)
Swaps the 2 bytes (changes endianness) of the bytes at the given offset.

Parameters:
bytes - buffer containing bytes to swap
offset - offset of the first byte of the bytes to swap

forward

public static int forward(ByteBuffer buffer,
                          int count)
Moves the position of the given buffer the given count from the current position.

Returns:
the new buffer position

copyOf

public static byte[] copyOf(byte[] arr,
                            int newLength)
Returns a copy of the given array of the given length.


copyOf

public static byte[] copyOf(byte[] arr,
                            int offset,
                            int newLength)
Returns a copy of the given array of the given length starting at the given position.


copyOf

public static byte[] copyOf(byte[] arr,
                            int offset,
                            int newLength,
                            int dstOffset)
Returns a copy of the given array of the given length starting at the given position.


copy

public static void copy(InputStream in,
                        OutputStream out)
                 throws IOException
Copies the given InputStream to the given OutputStream.

Throws:
IOException

closeQuietly

public static void closeQuietly(Closeable c)
Closes the given Closeable if non-null, swallows any IOExceptions.



Copyright © 2005–2017 Health Market Science. All rights reserved.