public final class BufferUtils extends Object
Modifier and Type | Field and Description |
---|---|
static Int2IntFunction |
DEFAULT_BUFFER_GROWTH_FACTOR |
static char |
DEFAULT_HEX_SEPARATOR |
static char |
EMPTY_HEX_SEPARATOR |
static String |
HEX_DIGITS |
Modifier and Type | Method and Description |
---|---|
static <B extends Buffer> |
clear(B buffer)
Invokes
Buffer.clear() |
static byte[] |
decodeHex(char separator,
CharSequence csq) |
static byte[] |
decodeHex(char separator,
CharSequence csq,
int start,
int end) |
static <S extends OutputStream> |
decodeHex(S stream,
char separator,
CharSequence csq) |
static <S extends OutputStream> |
decodeHex(S stream,
char separator,
CharSequence csq,
int start,
int end) |
static boolean |
equals(byte[] a1,
byte[] a2) |
static boolean |
equals(byte[] a1,
int a1Offset,
byte[] a2,
int a2Offset,
int length) |
static byte |
fromHex(char hi,
char lo) |
static int |
getNextPowerOf2(int value) |
static long |
getUInt(byte... buf) |
static long |
getUInt(byte[] buf,
int off,
int len) |
static String |
printHex(byte... array) |
static String |
printHex(byte[] array,
int offset,
int len) |
static String |
printHex(byte[] array,
int offset,
int len,
char sep) |
static String |
printHex(char sep,
byte... array) |
static int |
putUInt(long value,
byte[] buf)
Writes a 32-bit value in network order (i.e., MSB 1st)
|
static int |
putUInt(long value,
byte[] buf,
int off,
int len)
Writes a 32-bit value in network order (i.e., MSB 1st)
|
static int |
readInt(InputStream input,
byte[] buf)
Read a 32-bit value in network order
|
static int |
readInt(InputStream input,
byte[] buf,
int offset,
int len)
Read a 32-bit value in network order
|
static long |
readUInt(InputStream input,
byte[] buf)
Read a 32-bit value in network order
|
static long |
readUInt(InputStream input,
byte[] buf,
int offset,
int len)
Read a 32-bit value in network order
|
static int |
updateLengthPlaceholder(Buffer buffer,
int lenPos)
Used for encodings where we don't know the data length before adding it
to the buffer.
|
static void |
updateLengthPlaceholder(Buffer buffer,
int lenPos,
int dataLength)
Updates a 32-bit "placeholder" location for data length - moves
the write position to the specified placeholder position, updates the length
value and then moves the write position it back to its original value.
|
static void |
writeInt(OutputStream output,
int value,
byte[] buf)
Writes a 32-bit value in network order (i.e., MSB 1st)
|
static void |
writeInt(OutputStream output,
int value,
byte[] buf,
int off,
int len)
Writes a 32-bit value in network order (i.e., MSB 1st)
|
static void |
writeUInt(OutputStream output,
long value,
byte[] buf)
Writes a 32-bit value in network order (i.e., MSB 1st)
|
static void |
writeUInt(OutputStream output,
long value,
byte[] buf,
int off,
int len)
Writes a 32-bit value in network order (i.e., MSB 1st)
|
public static final char DEFAULT_HEX_SEPARATOR
public static final char EMPTY_HEX_SEPARATOR
public static final String HEX_DIGITS
public static final Int2IntFunction DEFAULT_BUFFER_GROWTH_FACTOR
public static String printHex(byte... array)
public static String printHex(char sep, byte... array)
public static String printHex(byte[] array, int offset, int len)
public static String printHex(byte[] array, int offset, int len, char sep)
public static byte[] decodeHex(char separator, CharSequence csq)
separator
- The separator between the HEX values - may be EMPTY_HEX_SEPARATOR
csq
- The CharSequence
containing the HEX encoded bytesIllegalArgumentException
- If invalid HEX sequence lengthNumberFormatException
- If invalid HEX characters founddecodeHex(char, CharSequence, int, int)
public static byte[] decodeHex(char separator, CharSequence csq, int start, int end)
separator
- The separator between the HEX values - may be EMPTY_HEX_SEPARATOR
csq
- The CharSequence
containing the HEX encoded bytesstart
- Start offset of the HEX sequence (inclusive)end
- End offset of the HEX sequence (exclusive)IllegalArgumentException
- If invalid HEX sequence lengthNumberFormatException
- If invalid HEX characters foundpublic static <S extends OutputStream> int decodeHex(S stream, char separator, CharSequence csq) throws IOException
S
- The OutputStream
generic typestream
- The target OutputStream
separator
- The separator between the HEX values - may be EMPTY_HEX_SEPARATOR
csq
- The CharSequence
containing the HEX encoded bytesIOException
- If failed to writeIllegalArgumentException
- If invalid HEX sequence lengthNumberFormatException
- If invalid HEX characters founddecodeHex(OutputStream, char, CharSequence, int, int)
public static <S extends OutputStream> int decodeHex(S stream, char separator, CharSequence csq, int start, int end) throws IOException
S
- The OutputStream
generic typestream
- The target OutputStream
separator
- The separator between the HEX values - may be EMPTY_HEX_SEPARATOR
csq
- The CharSequence
containing the HEX encoded bytesstart
- Start offset of the HEX sequence (inclusive)end
- End offset of the HEX sequence (exclusive)IOException
- If failed to writeIllegalArgumentException
- If invalid HEX sequence lengthNumberFormatException
- If invalid HEX characters foundpublic static byte fromHex(char hi, char lo) throws NumberFormatException
NumberFormatException
public static int readInt(InputStream input, byte[] buf) throws IOException
input
- The InputStream
buf
- Work buffer to useIOException
- If failed to read 4 bytes or not enough room inreadInt(InputStream, byte[], int, int)
public static int readInt(InputStream input, byte[] buf, int offset, int len) throws IOException
input
- The InputStream
buf
- Work buffer to useoffset
- Offset in buffer to uslen
- Available length - must have at least 4 bytes availableIOException
- If failed to read 4 bytes or not enough room in
work bufferreadUInt(InputStream, byte[], int, int)
public static long readUInt(InputStream input, byte[] buf) throws IOException
input
- The InputStream
buf
- Work buffer to useIOException
- If failed to read 4 bytes or not enough room inreadUInt(InputStream, byte[], int, int)
public static long readUInt(InputStream input, byte[] buf, int offset, int len) throws IOException
input
- The InputStream
buf
- Work buffer to useoffset
- Offset in buffer to uslen
- Available length - must have at least 4 bytes availableIOException
- If failed to read 4 bytes or not enough room in
work buffergetUInt(byte[], int, int)
public static long getUInt(byte... buf)
buf
- A buffer holding a 32-bit unsigned integer in big endian
format. Note: if more than 4 bytes are available, then only the
first 4 bytes in the buffer will be usedlong
whose 32 high-order bits are zerogetUInt(byte[], int, int)
public static long getUInt(byte[] buf, int off, int len)
buf
- A buffer holding a 32-bit unsigned integer in big endian
format.off
- The offset of the data in the bufferlen
- The available data length. Note: if more than 4 bytes
are available, then only the first 4 bytes in the buffer will be
used (starting at the specified offset)long
whose 32 high-order bits are zeropublic static void writeInt(OutputStream output, int value, byte[] buf) throws IOException
output
- The OutputStream
to write the valuevalue
- The 32-bit valuebuf
- A work buffer to use - must have enough space to contain 4 bytesIOException
- If failed to write the value or work buffer to smallwriteInt(OutputStream, int, byte[], int, int)
public static void writeInt(OutputStream output, int value, byte[] buf, int off, int len) throws IOException
output
- The OutputStream
to write the valuevalue
- The 32-bit valuebuf
- A work buffer to use - must have enough space to contain 4 bytesoff
- The offset to write the valuelen
- The available spaceIOException
- If failed to write the value or work buffer to smallwriteUInt(OutputStream, long, byte[], int, int)
public static void writeUInt(OutputStream output, long value, byte[] buf) throws IOException
output
- The OutputStream
to write the valuevalue
- The 32-bit valuebuf
- A work buffer to use - must have enough space to contain 4 bytesIOException
- If failed to write the value or work buffer to smallwriteUInt(OutputStream, long, byte[], int, int)
public static void writeUInt(OutputStream output, long value, byte[] buf, int off, int len) throws IOException
output
- The OutputStream
to write the valuevalue
- The 32-bit valuebuf
- A work buffer to use - must have enough space to contain 4 bytesoff
- The offset to write the valuelen
- The available spaceIOException
- If failed to write the value or work buffer to smallputUInt(long, byte[], int, int)
public static int putUInt(long value, byte[] buf)
value
- The 32-bit valuebuf
- The bufferIllegalArgumentException
- if not enough space availableputUInt(long, byte[], int, int)
public static int putUInt(long value, byte[] buf, int off, int len)
value
- The 32-bit valuebuf
- The bufferoff
- The offset to write the valuelen
- The available spaceIllegalArgumentException
- if not enough space availablepublic static boolean equals(byte[] a1, byte[] a2)
public static boolean equals(byte[] a1, int a1Offset, byte[] a2, int a2Offset, int length)
public static int getNextPowerOf2(int value)
public static int updateLengthPlaceholder(Buffer buffer, int lenPos)
buffer
- The Buffer
lenPos
- The offset in the buffer where the length placeholder is
to be update - Note: assumption is that the encoded data starts
immediately after the placeholderpublic static void updateLengthPlaceholder(Buffer buffer, int lenPos, int dataLength)
buffer
- The Buffer
lenPos
- The offset in the buffer where the length placeholder is
to be update - Note: assumption is that the encoded data starts
immediately after the placeholderdataLength
- The length to updatepublic static <B extends Buffer> B clear(B buffer)
Buffer.clear()
B
- The generic buffer typebuffer
- A Buffer
instance - ignored if null
Copyright © 2008–2016 The Apache Software Foundation. All rights reserved.