Methods Summary |
---|
public static byte[] | getByteArray(byte[] data, int offset, int size)Copy a portion of a byte array
byte[] copy = new byte[size];
System.arraycopy(data, offset, copy, 0, size);
return copy;
|
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
return Double.longBitsToDouble(getNumber(data, offset, DOUBLE_SIZE));
|
public static double | getDouble(byte[] data)get a double value from the beginning of a byte array
return getDouble(data, 0);
|
public static int | getInt(byte[] data, int offset)get an int value from a byte array
return (int) getNumber(data, offset, INT_SIZE);
|
public static int | getInt(byte[] data)get an int value from the beginning of a byte array
return getInt(data, 0);
|
public static long | getLong(byte[] data, int offset)get a long value from a byte array
return getNumber(data, offset, LONG_SIZE);
|
public static long | getLong(byte[] data)get a long value from the beginning of a byte array
return getLong(data, 0);
|
private static long | getNumber(byte[] data, int offset, int size)Gets the number attribute of the LittleEndian class
long result = 0;
for (int j = offset + size - 1; j >= offset; j--) {
result <<= 8;
result |= 0xff & data[j];
}
return result;
|
public static short | getShort(byte[] data, int offset)get a short value from a byte array
return (short) getNumber(data, offset, SHORT_SIZE);
|
public static short | getShort(byte[] data)get a short value from the beginning of a byte array
return getShort(data, 0);
|
public static short[] | getShortArray(byte[] data, int offset)get a short array from a byte array. The short array is assumed to start
with a word describing the length of the array.
int size = (int) getNumber(data, offset, SHORT_SIZE);
short[] results = getSimpleShortArray(data, offset, size);
return results;
|
public static short[] | getSimpleShortArray(byte[] data, int offset, int size)get a short array from a byte array.
short[] results = new short[size];
for (int i = 0; i < size; i++) {
results[i] = getShort(data, offset + 2 + (i * 2));
}
return results;
|
public static long | getUInt(byte[] data, int offset)get an unsigned int value from a byte array
int num = (int) getNumber(data, offset, INT_SIZE);
long retNum;
if (num < 0) {
retNum = ((long) Integer.MAX_VALUE + 1) * 2 + num;
} else {
retNum = num;
}
return retNum;
|
public static long | getUInt(byte[] data)get an unsigned int value from a byte array
return getUInt(data,0);
|
public static long | getULong(byte[] data, int offset)Gets an unsigned int value (8 bytes) from a byte array.
int num = (int) getNumber(data, offset, LONG_SIZE);
long retNum;
if (num < 0)
retNum = ((long) Integer.MAX_VALUE + 1) * 2 + num;
else
retNum = num;
return retNum;
|
public static int | getUShort(byte[] data, int offset)get an unsigned short value from a byte array
short num = (short) getNumber(data, offset, SHORT_SIZE);
int retNum;
if (num < 0) {
retNum = (Short.MAX_VALUE + 1) * 2 + num;
} else {
retNum = num;
}
return retNum;
|
public static int | getUShort(byte[] data)get an unsigned short value from the beginning of a byte array
return getUShort(data, 0);
|
public static int | getUnsignedByte(byte[] data, int offset)get the unsigned value of a byte.
return (int) getNumber(data, offset, BYTE_SIZE);
|
public static int | getUnsignedByte(byte[] data)get the unsigned value of a byte.
return getUnsignedByte(data, 0);
|
public static void | putDouble(byte[] data, int offset, double value)put a double value into a byte array
// Excel likes NaN to be a specific value.
if (Double.isNaN(value))
putNumber(data, offset, -276939487313920L, DOUBLE_SIZE);
else
putNumber(data, offset, Double.doubleToLongBits(value), DOUBLE_SIZE);
|
public static void | putDouble(byte[] data, double value)put a double value into beginning of a byte array
putDouble(data, 0, value);
|
public static void | putInt(byte[] data, int offset, int value)put an int value into a byte array
putNumber(data, offset, value, INT_SIZE);
|
public static void | putInt(byte[] data, int value)put an int value into beginning of a byte array
putInt(data, 0, value);
|
public static void | putLong(byte[] data, int offset, long value)put a long value into a byte array
putNumber(data, offset, value, LONG_SIZE);
|
public static void | putLong(byte[] data, long value)put a long value into beginning of a byte array
putLong(data, 0, value);
|
private static void | putNumber(byte[] data, int offset, long value, int size)Description of the Method
int limit = size + offset;
long v = value;
for (int j = offset; j < limit; j++) {
data[j] = (byte) (v & 0xFF);
v >>= 8;
}
|
public static void | putShort(byte[] data, int offset, short value)put a short value into a byte array
putNumber(data, offset, value, SHORT_SIZE);
|
public static void | putShort(byte[] data, short value)put a short value into beginning of a byte array
putShort(data, 0, value);
|
public static void | putShortArray(byte[] data, int offset, short[] value)put a array of shorts into a byte array
putNumber(data, offset, value.length, SHORT_SIZE);
for (int i = 0; i < value.length; i++) {
putNumber(data, offset + 2 + (i * 2), value[i], SHORT_SIZE);
}
|
public static void | putUShort(byte[] data, int offset, int value)put an unsigned short value into a byte array
putNumber(data, offset, value, SHORT_SIZE);
|
public static byte[] | readFromStream(java.io.InputStream stream, int size)Read the appropriate number of bytes from the stream and return them to
the caller.
However, for the purposes of the POI project, this risk is deemed
negligible. It is, however, so noted.
byte[] buffer = new byte[size];
int count = stream.read(buffer);
if (count == -1) {
// return a zero-filled buffer
Arrays.fill(buffer, (byte) 0);
} else if (count != size) {
throw new BufferUnderrunException();
}
return buffer;
|
public static int | readInt(java.io.InputStream stream)get an int value from an InputStream
return getInt(readFromStream(stream, INT_SIZE));
|
public static long | readLong(java.io.InputStream stream)get a long value from an InputStream
return getLong(readFromStream(stream, LONG_SIZE));
|
public static short | readShort(java.io.InputStream stream)get a short value from an InputStream
return getShort(readFromStream(stream, SHORT_SIZE));
|
public static int | ubyteToInt(byte b)Convert an 'unsigned' byte to an integer. ie, don't carry across the
sign.
return ((b & 0x80) == 0 ? (int) b : (b & (byte) 0x7f) + 0x80);
|