Package org.apache.poi.util
Class LittleEndian
java.lang.Object
org.apache.poi.util.LittleEndian
- All Implemented Interfaces:
LittleEndianConsts
a utility class for handling little-endian numbers, which the 80x86 world is
replete with. The methods are all static, and input/output is from/to byte
arrays, or from InputStreams.
- Author:
- Marc Johnson (mjohnson at apache dot org), Andrew Oliver (acoliver at apache dot org)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
Exception to handle buffer underruns -
Field Summary
Fields inherited from interface org.apache.poi.util.LittleEndianConsts
BYTE_SIZE, DOUBLE_SIZE, INT_SIZE, LONG_SIZE, SHORT_SIZE
-
Method Summary
Modifier and TypeMethodDescriptionstatic byte[]
getByteArray
(byte[] data, int offset, int size) Copy a portion of a byte arraystatic byte[]
getByteArray
(byte[] data, int offset, int size, int maxSize) Copy a portion of a byte arraystatic double
getDouble
(byte[] data) get a double value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java doublestatic double
getDouble
(byte[] data, int offset) get a double value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java doublestatic float
getFloat
(byte[] data) get a float value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java floatstatic float
getFloat
(byte[] data, int offset) get a float value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java floatstatic int
getInt
(byte[] data) get an int value from the beginning of a byte arraystatic int
getInt
(byte[] data, int offset) get an int value from a byte arraystatic long
getLong
(byte[] data) get a long value from a byte arraystatic long
getLong
(byte[] data, int offset) get a long value from a byte arraystatic short
getShort
(byte[] data) get a short value from the beginning of a byte arraystatic short
getShort
(byte[] data, int offset) get a short value from a byte arraystatic short[]
getShortArray
(byte[] data, int offset, int size) Read short arraystatic short
getUByte
(byte[] data) get the unsigned value of a byte.static short
getUByte
(byte[] data, int offset) get the unsigned value of a byte.static long
getUInt
(byte[] data) get an unsigned int value from a byte arraystatic long
getUInt
(byte[] data, int offset) get an unsigned int value from a byte arraystatic int
getUShort
(byte[] data) get an unsigned short value from the beginning of a byte arraystatic int
getUShort
(byte[] data, int offset) get an unsigned short value from a byte arraystatic void
putByte
(byte[] data, int offset, int value) executes:static void
putDouble
(byte[] data, int offset, double value) put a double value into a byte arraystatic void
putDouble
(double value, OutputStream outputStream) put a double value into a byte arraystatic void
putFloat
(byte[] data, int offset, float value) put a float value into a byte arraystatic void
putFloat
(float value, OutputStream outputStream) put a float value into a byte arraystatic void
putInt
(byte[] data, int offset, int value) put an int value into a byte arraystatic void
putInt
(int value, OutputStream outputStream) Put int into output streamstatic void
putLong
(byte[] data, int offset, long value) put a long value into a byte arraystatic void
putLong
(long value, OutputStream outputStream) Put long into output streamstatic void
putShort
(byte[] data, int offset, short value) put a short value into a byte arraystatic void
putShort
(OutputStream outputStream, short value) Put signed short into output streamstatic void
putShortArray
(byte[] data, int startOffset, short[] value) Stores short array in bufferstatic void
putUByte
(byte[] data, int offset, short value) put an unsigned byte value into a byte arraystatic void
putUInt
(byte[] data, int offset, long value) put an unsigned int value into a byte arraystatic void
putUInt
(long value, OutputStream outputStream) Put unsigned int into output streamstatic void
putUShort
(byte[] data, int offset, int value) put an unsigned short value into a byte arraystatic void
putUShort
(int value, OutputStream outputStream) Put unsigned short into output streamstatic int
readInt
(InputStream stream) get an int value from an InputStreamstatic long
readLong
(InputStream stream) get a long value from an InputStreamstatic short
readShort
(InputStream stream) get a short value from an InputStreamstatic long
readUInt
(InputStream stream) get an unsigned int value from an InputStreamstatic int
readUShort
(InputStream stream) static int
ubyteToInt
(byte b) Convert an 'unsigned' byte to an integer.
-
Method Details
-
getByteArray
public static byte[] getByteArray(byte[] data, int offset, int size) Copy a portion of a byte array- Parameters:
data
- the original byte arrayoffset
- Where to start copying from.size
- Number of bytes to copy.- Returns:
- The byteArray value
- Throws:
IndexOutOfBoundsException
- - if copying would cause access of data outside array bounds.- See Also:
-
getByteArray
public static byte[] getByteArray(byte[] data, int offset, int size, int maxSize) Copy a portion of a byte array- Parameters:
data
- the original byte arrayoffset
- Where to start copying from.size
- Number of bytes to copy.maxSize
- Size must be invalid input: '<'= maxSize or an exception is thrown. Use this to avoid potential OOMs on corrupt data.- Returns:
- The byteArray value
- Throws:
IndexOutOfBoundsException
- - if copying would cause access of data outside array bounds.
-
getDouble
public static double getDouble(byte[] data) get a double value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java double- Parameters:
data
- the byte array- Returns:
- the double (64-bit) value
-
getDouble
public static double getDouble(byte[] data, int offset) get a double value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java double- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte array- Returns:
- the double (64-bit) value
-
getFloat
public static float getFloat(byte[] data) get a float value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java float- Parameters:
data
- the byte array- Returns:
- the double (64-bit) value
-
getFloat
public static float getFloat(byte[] data, int offset) get a float value from a byte array, reads it in little endian format then converts the resulting revolting IEEE 754 (curse them) floating point number to a happy java float- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte array- Returns:
- the double (64-bit) value
-
getInt
public static int getInt(byte[] data) get an int value from the beginning of a byte array- Parameters:
data
- the byte array- Returns:
- the int (32-bit) value
-
getInt
public static int getInt(byte[] data, int offset) get an int value from a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte array- Returns:
- the int (32-bit) value
-
getLong
public static long getLong(byte[] data) get a long value from a byte array- Parameters:
data
- the byte array- Returns:
- the long (64-bit) value
-
getLong
public static long getLong(byte[] data, int offset) get a long value from a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte array- Returns:
- the long (64-bit) value
-
getShort
public static short getShort(byte[] data) get a short value from the beginning of a byte array- Parameters:
data
- the byte array- Returns:
- the short (16-bit) value
-
getShort
public static short getShort(byte[] data, int offset) get a short value from a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte array- Returns:
- the short (16-bit) value
-
getShortArray
public static short[] getShortArray(byte[] data, int offset, int size) Read short array- Parameters:
data
- the original byte arrayoffset
- Where to start copying from.size
- Number of bytes to copy.- Throws:
IndexOutOfBoundsException
- - if read would cause access of data outside array bounds.
-
getUByte
public static short getUByte(byte[] data) get the unsigned value of a byte.- Parameters:
data
- the byte array.- Returns:
- the unsigned value of the byte as a 16 bit short
-
getUByte
public static short getUByte(byte[] data, int offset) get the unsigned value of a byte.- Parameters:
data
- the byte array.offset
- a starting offset into the byte array.- Returns:
- the unsigned value of the byte as a 16 bit short
-
getUInt
public static long getUInt(byte[] data) get an unsigned int value from a byte array- Parameters:
data
- the byte array- Returns:
- the unsigned int (32-bit) value in a long
-
getUInt
public static long getUInt(byte[] data, int offset) get an unsigned int value from a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte array- Returns:
- the unsigned int (32-bit) value in a long
-
getUShort
public static int getUShort(byte[] data) get an unsigned short value from the beginning of a byte array- Parameters:
data
- the byte array- Returns:
- the unsigned short (16-bit) value in an int
-
getUShort
public static int getUShort(byte[] data, int offset) get an unsigned short value from a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte array- Returns:
- the unsigned short (16-bit) value in an integer
-
putByte
public static void putByte(byte[] data, int offset, int value) executes:data[offset] = (byte)value;
-
putDouble
public static void putDouble(byte[] data, int offset, double value) put a double value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the double (64-bit) value
-
putDouble
put a double value into a byte array- Parameters:
value
- the double (64-bit) valueoutputStream
- output stream- Throws:
IOException
- if an I/O error occurs
-
putFloat
public static void putFloat(byte[] data, int offset, float value) put a float value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the float (32-bit) value
-
putFloat
put a float value into a byte array- Parameters:
value
- the float (32-bit) valueoutputStream
- output stream- Throws:
IOException
- if an I/O error occurs
-
putInt
public static void putInt(byte[] data, int offset, int value) put an int value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the int (32-bit) value
-
putInt
Put int into output stream- Parameters:
value
- the int (32-bit) valueoutputStream
- output stream- Throws:
IOException
- if an I/O error occurs
-
putLong
public static void putLong(byte[] data, int offset, long value) put a long value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the long (64-bit) value
-
putLong
Put long into output stream- Parameters:
value
- the long (64-bit) valueoutputStream
- output stream- Throws:
IOException
- if an I/O error occurs
-
putShort
public static void putShort(byte[] data, int offset, short value) put a short value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the short (16-bit) value
-
putShort
Put signed short into output stream- Parameters:
outputStream
- output streamvalue
- the short (16-bit) value- Throws:
IOException
- if an I/O error occurs
-
putShortArray
public static void putShortArray(byte[] data, int startOffset, short[] value) Stores short array in buffer- Parameters:
data
- the byte arraystartOffset
- a starting offset into the byte arrayvalue
- the short (16-bit) values
-
putUByte
public static void putUByte(byte[] data, int offset, short value) put an unsigned byte value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the short (16-bit) value- Throws:
ArrayIndexOutOfBoundsException
- may be thrown
-
putUInt
public static void putUInt(byte[] data, int offset, long value) put an unsigned int value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the int (32-bit) value- Throws:
ArrayIndexOutOfBoundsException
- may be thrown
-
putUInt
Put unsigned int into output stream- Parameters:
value
- the int (32-bit) valueoutputStream
- output stream- Throws:
IOException
- if an I/O error occurs
-
putUShort
public static void putUShort(byte[] data, int offset, int value) put an unsigned short value into a byte array- Parameters:
data
- the byte arrayoffset
- a starting offset into the byte arrayvalue
- the short (16-bit) value- Throws:
ArrayIndexOutOfBoundsException
- may be thrown
-
putUShort
Put unsigned short into output stream- Parameters:
value
- the unsigned short (16-bit) valueoutputStream
- output stream- Throws:
IOException
- if an I/O error occurs
-
readInt
public static int readInt(InputStream stream) throws IOException, LittleEndian.BufferUnderrunException get an int value from an InputStream- Parameters:
stream
- the InputStream from which the int is to be read- Returns:
- the int (32-bit) value
- Throws:
IOException
- will be propagated back to the callerLittleEndian.BufferUnderrunException
- if the stream cannot provide enough bytes
-
readUInt
public static long readUInt(InputStream stream) throws IOException, LittleEndian.BufferUnderrunException get an unsigned int value from an InputStream- Parameters:
stream
- the InputStream from which the int is to be read- Returns:
- the unsigned int (32-bit) value
- Throws:
IOException
- will be propagated back to the callerLittleEndian.BufferUnderrunException
- if the stream cannot provide enough bytes
-
readLong
public static long readLong(InputStream stream) throws IOException, LittleEndian.BufferUnderrunException get a long value from an InputStream- Parameters:
stream
- the InputStream from which the long is to be read- Returns:
- the long (64-bit) value
- Throws:
IOException
- will be propagated back to the callerLittleEndian.BufferUnderrunException
- if the stream cannot provide enough bytes
-
readShort
public static short readShort(InputStream stream) throws IOException, LittleEndian.BufferUnderrunException get a short value from an InputStream- Parameters:
stream
- the InputStream from which the short is to be read- Returns:
- the short (16-bit) value
- Throws:
IOException
- will be propagated back to the callerLittleEndian.BufferUnderrunException
- if the stream cannot provide enough bytes
-
readUShort
public static int readUShort(InputStream stream) throws IOException, LittleEndian.BufferUnderrunException -
ubyteToInt
public static int ubyteToInt(byte b) Convert an 'unsigned' byte to an integer. ie, don't carry across the sign.- Parameters:
b
- Description of the Parameter- Returns:
- Description of the Return Value
-